通常,函数的参数是按值参数;也就是说,参数的值是在传递给函数之前确定的。但是,如果我们需要编写一个函数,该函数接受在函数中被调用之前不希望对其求值的表达式作为参数,该怎么办?在这种情况下,Scala提供了按姓名呼叫参数。
按名称的呼叫机制将代码块传递给该呼叫,并且每次该呼叫访问该参数时,都会执行该代码块并计算值。在这里,delay打印一条消息,表明已输入该方法。接下来,延迟打印一条带有其值的消息。最后,延迟回报为" t"。
链接:https://www.learnfk.comhttps://www.learnfk.com/scala/functions-call-by-name.html
来源:LearnFk无涯教程网
以下程序显示了如何实现按名称呼叫。
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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)