
三十四、Scala 教程: 函数传名调用(call-by-name)
Scala的解释器在解析函数参数(function arguments)时有两种方式:
- 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部;
- 传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部
在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。
这就造成了一种现象,每次使用传名调用时,解释器都会计算一次表达式的值。
object Test {
def main(args: Array[String]) {
delayed(time());
}
def time() = {
println("获取时间,单位为纳秒")
System.nanoTime
}
def delayed( t: => Long ) = {
println("在 delayed 方法内")
println("参数: " + t)
t
}
}
上面的范例中,我们声明了 delayed 方法, 该方法在变量名和变量类型使用 => 符号来设置传名调用。
执行以上代码,输出结果如下:
在 delayed 方法内
获取时间,单位为纳秒
参数: 59411516823836
获取时间,单位为纳秒
范例中 delay 方法打印了一条信息表示进入了该方法,接着 delay 方法打印接收到的值,最后再返回 t。
感谢您的来访,获取更多精彩文章请收藏本站。
© 版权声明
THE END









![羊了个羊抖音微信小程序苹果安卓通用(包括话题PK刷通关)[已失效]-456源码网](https://cnyma.cn/wp-content/uploads/2022/09/2022091801214643-461x1024.jpg)

![[本站同款主题]子比破解版主题最新V6.5.1破解免授权版(安装即可用)-456源码网](https://cnyma.cn/wp-content/uploads/2022/07/Screenshot_2022-07-27-17-58-33-889_com.android.browser-461x1024.jpg)
![羊了个羊抖音微信小程序_安卓苹果通用刷通关网页源码(可刷话题PK)[已失效仅供参考]-456源码网](https://cnyma.cn/wp-content/uploads/2022/09/2022091802141819-461x1024.jpg)

暂无评论内容