通常,函数的参数是按值参数;也就是说,参数的值是在传递给函数之前确定的。但是,如果我们需要编写一个函数,该函数接受在函数中被调用之前不希望对其求值的表达式作为参数,该怎么办?在这种情况下,Scala提供了按姓名呼叫参数。
按名称的呼叫机制将代码块传递给该呼叫,并且每次该呼叫访问该参数时,都会执行该代码块并计算值。在这里,delay打印一条消息,表明已输入该方法。接下来,延迟打印一条带有其值的消息。最后,延迟回报为" t"。
以下程序显示了如何实现按名称呼叫。
例
object Demo { def main(args: Array[String]) { delayed(time()); } def time()={ println("Getting time in nano seconds") System.nanoTime } def delayed( t: => Long )={ println("In delayed method") println("Param: " + t) } }
将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。
命令
\>scalac Demo.scala \>scala Demo
输出
In delayed method Getting time in nano seconds Param: 2027245119786400
参考链接
https://www.learnfk.com/scala/functions-call-by-name.html
标签:Functions,Name,scala,Demo,Scala,delayed,time,呼叫,函数 From: https://blog.51cto.com/u_14033984/9438918