为什么这段代码返回Unit,而我希望它返回一些其他值?

时间:2012-12-25 09:46:24

标签: scala

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 ...

任何指针?

谢谢..

1 个答案:

答案 0 :(得分:6)

方法newUniqueNumber应返回一些内容,因此您需要在其签名上添加等号:

private def newUniqueNumber() = {
  lastNumber += 1
  lastNumber
}

没有它,它返回Unit,类似于Java void,并打印为()