class Account {
val id = Account.newUniqueNumber()
private var balance = 0.0
def deposit(amount: Double) { balance += amount }
}
object Account {
private var lastNumber = 0
private def newUniqueNumber() {
lastNumber += 1; lastNumber
}
}
var a1 = new Account()
var a2 = new Account()
println(a1.id)
println(a2.id)
~/myScala % scala -version
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL
~/myScala % scala Account.scala
()
()
~/myScala %
出力として 1,2 を期待していました... 私の理由は...
1. 新しい Account オブジェクトが構築されます
2. id フィールドの初期化中に、コンパニオン オブジェクトが構築されます (1 回だけ)
したがって、newUniqueNumber() 呼び出しは 1 と 2 を返すはずです...
ポインタはありますか?
ありがとう..