我有一个功能:
def nanoTime() = {
println("Getting nano time...")
System.nanoTime // returns nanoTime
}
和另一个函数,它接受一个函数
def printTime(time: => Long) = { // indicates a by-name parameter
println(">> delayed()")
println("Param: " + time)
time // returns time
}
现在事情就是这样。当我做:
scala> printTime(nanoTime())
>> delayed()
Getting nano time...
Param: 546632085606127
Getting nano time...
res11: Long = 546632086131624
当我这样做时,我得到了相同的结果:
scala> printTime(nanoTime)
>> delayed()
Getting nano time...
Param: 546622367510997
Getting nano time...
res10: Long = 546622368149903
之间没有区别:
scala> printTime(nanoTime())
和
scala> printTime(nanoTime)
所以传递函数名和传递函数名后跟()是没有区别的。是不是一直都是这样,还是这个案子有什么特别之处?
谢谢。