class Foo(bar: String) {
import Foo.Bar
def this() = this(Bar) // this line fails, it seems I can only do
// def this() = this(Foo.Bar)
}
object Foo {
val Bar = "Hello Bar"
}
基本上,如何在Bar
之后使用import Foo.Bar
,我是否真的每次都要拨打Foo.Bar
?
答案 0 :(得分:13)
辅助构造函数具有外部作用域,可以防止你像这样做一些愚蠢的事情:
class Silly(foo: String) {
val bar = 123
def this() = this(bar.toString)
}
在构造函数中创建参数后,尝试将参数传递给构造函数。
不幸的是,这意味着import Foo.Bar
不在该行的范围内。您必须使用完整路径Foo.Bar
。
对于类中的所有内容(除外),其他构造函数Foo.Bar
将在Bar
范围内。
答案 1 :(得分:5)
如果只是在类定义之外导入怎么办?
import Foo.Bar
class Foo(bar: String) {
def this() = this(Bar)
}
object Foo {
val Bar = "Hello Bar"
}