Scala的解释器在解析函数参数(function arguments)时有两种方式:函数
在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。code
这就形成了一种现象,每次使用传名调用时,解释器都会计算一次表达式的值。io
package demo object Demo { def time() = { println("获取时间,单位为纳秒"); System.nanoTime(); } def delayed( t: =>Long ) = { println("在 delayed 方法内"); println("参数:"+t); println("llll"); t } def main(args:Array[String]){ delayed(time()); } }
以上实例中咱们声明了 delayed 方法, 该方法在变量名和变量类型使用 => 符号来设置传名调用。执行以上代码,输出结果以下:function
在 delayed 方法内 获取时间,单位为纳秒 参数:562270301966829 llll 获取时间,单位为纳秒
实例中 delay 方法打印了一条信息表示进入了该方法,接着 delay 方法打印接收到的值,最后再返回 t。变量