我有这样的包结构。
在档案A / B / package.scala
中package A
package object B {
def foo = "Hello world"
}
在档案A / B / xyz.scala
中package A.B
object bar {
def baz() {
println(foo())
}
}
这不会引发错误。它将按预期工作。但如果我尝试使用像:
在文件A / B / C / biz.scala
中package A.B.C
object biz {
def baz() {
println(foo())
}
}
由于foo不在内包的范围内,因此会抛出错误。我需要全局访问foo()。我怎样才能实现它?
一种方法是导入A.B,如import A.B._
。
但它会导入A.B包中的所有类,我不想这样做。 有没有其他方法可以实现相同的目标?
答案 0 :(得分:1)
最合适的是import A.B.foo
(以及您需要的其他特定方法)。您还可以在非包对象中使foo
可用并导入其所有方法。当然,您也可以 将它们包含在包对象中:
package A.B
abstract class ABMethods { def foo = ... }
package A
package object B extends ABMethods { ... }
package A.B
object Foo extends ABMethods { ... }
但是如果没有A.B
的所有类,就没有办法让所有的包对象方法都可用。