在
object O {
// construction code and member initialization
}
构造,这个代码什么时候开始运行?
答案 0 :(得分:12)
第一次访问O
时会调用代码(某些方法或某些属性)。例如以下程序
object O {
println("Hello from O")
def doSome() {}
}
object App extends Application {
println("Before O")
O.doSome()
println("After O")
}
将产生
Before O
Hello From O
After O
仅仅定义O
是不够的。此外,由于编译对象的名称为Class.forName("O")
,因此调用O$
无效,因此调用Class.forName("O$")
即可。
答案 1 :(得分:4)
为了建立自力更生:
scala> object O { println("hi") }
defined module O
scala> O
hi
res0: O.type = O$@51d92803
scala> O
res1: O.type = O$@51d92803