函数按名称调用
通常,函数的参数是按值参数;也就是说,参数的值是在传递给函数之前确定的。但是,如果我们需要编写一个函数,该函数接受在函数中被调用之前不希望对其求值的表达式作为参数,该怎么办?在这种情况下,Scala提供了按名字调用的参数。 按名称调用机制将代码块传递给该调用,并且每次调用访问该参数时,都会执行该代码块并计算值。在这里,delay打印一条消息,表明已输入该方法。接下来,延迟打印一条带有其值的消息。最后,延迟返回“t”。
以下程序显示了如何实现按名称调用。
object Demo {
def main(args: Array[String]):Unit = {
delayed(time());
}
def time() = {
println("Getting time in nano seconds")
System.nanoTime
}
def delayed( t: => Long ) = {
println("In delayed method")
println("Param: " + t)
}
}
尝试一下
输出:
In delayed method
Getting time in nano seconds
Param: 41638109552165124