传调用使用=>符号表示,两者的区别在于,传值调用在使用时已经计算好,而传名调用只有在使用的时候调用。
object Test {
var money = 10
def drink: Unit = {
money -= 1
}
def count: Int = {
drink
money
}
def printByName(x: => Int): Unit = {
for(i <- 0 until 5)
println(x )
}
def printByValue(x: Int): Unit = {
for(i <- 0 until 5)
println( x )
}
def main(args: Array[String]) = {
printByName(count)
printByValue(count)
}
}
以上两者的输出为:
9
8
7
6
5
4
4
4
4
4