Как мне выполнить импорт для всех классов в пакете scala одновременно?

#scala #import #package

#scala #импорт #пакет

Вопрос:

Рассмотрим пакет com.example . Внутри пакета com.example у нас есть два класса с именами Foo и Bar.

Существует также объект с именем Baz, расположенный в пакете с именем com.other . Есть ли способ импортировать Baz в Foo и Bar, используя только один оператор импорта? Другими словами, как я могу определить блок импорта, который влияет на все классы (Foo и Bar) в пакете (com.example)?

Я попробовал следующее, но оно не работает.

 // filename:package.scala location:com/example
package com { 
  package object example {
    import other.Baz
  }
}

// filename:Foo.scala location:com/example
package com.example {
  class Foo { 
    // Baz should be in scope here
    Baz.methodCall()
  }
  class Bar {
    // Baz should be in scope here too
    Baz.methodCall()
  }
}
  

Я пытался выполнить тщательный поиск, но я не уверен, как сформулировать этот сценарий. Спасибо за помощь.

Комментарии:

1. вы пробовали, в Foo.scala , import package.com.example._ ?

2. вы действительно хотели использовать a package object ?

Ответ №1:

Вы могли бы попробовать привязать его к val .

 package com { 
  package object example {
    val Baz = other.Baz
  }
}
  

Если вы не хотите Baz , чтобы они были видны снаружи:

 package com { 
  package object example {
    private[example] val Baz = other.Baz
  }
}