Scala - 按名称调用的函数
通常,函数的参数是按值参数; 也就是说,参数的值是在传递给函数之前确定的。 但是,如果我们需要编写一个函数,该函数接受一个表达式作为参数,在我们的函数中调用它之前我们不想计算它呢? 对于这种情况,Scala 提供了 call-by-name 参数。
按名称调用机制将代码块传递给调用,每次调用访问参数时,都会执行代码块并计算值。 在这里,延迟打印一条消息,表明该方法已被输入。 接下来,延迟打印一条带有其值的消息。 最后,延迟返回"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

