#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
}
}