Scala 函数按名称调用

  • 函数按名称调用

    通常,函数的参数是按值参数;也就是说,参数的值是在传递给函数之前确定的。但是,如果我们需要编写一个函数,该函数接受在函数中被调用之前不希望对其求值的表达式作为参数,该怎么办?在这种情况下,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