Scala使用最终的静态变量

时间:2012-03-22 08:18:45

标签: scala syntax static


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

2 个答案:

答案 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"
}