什么时候构造单个对象?

时间:2010-04-28 11:26:14

标签: scala

object O {
  // construction code and member initialization
}

构造,这个代码什么时候开始运行?

2 个答案:

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