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字段时,构建伴随对象(仅一次)
因此newUniqueNumber()调用应返回1和2 ...
任何指针?
谢谢..
答案 0 :(得分:6)
方法newUniqueNumber
应返回一些内容,因此您需要在其签名上添加等号:
private def newUniqueNumber() = {
lastNumber += 1
lastNumber
}
没有它,它返回Unit
,类似于Java void
,并打印为()
。