scala 传名调用call-by-name
来源:互联网 发布:搜客软件 编辑:程序博客网 时间:2024/05/16 15:00
Scala的解释器在解析函数参数(function arguments)时有两种方式:
- 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部;
- 传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部
在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕,而传名调用是在函数内部进行参数表达式的值计算的。
这就造成了一种现象,每次使用传名调用时,解释器都会计算一次表达式的值。delayed 方法, 该方法在变量名和变量类型使用 => 符号来设置传名调用。
package com.expgiga.ScalaTest/** * */object callByNameTest { def main(args:Array[String]): Unit = { delayed(time()) } def time() = { println("获取时间,单位为纳秒") System.nanoTime() } def delayed(t: => Long) = { //变量名和变量类型使用 => 符号来设置传名调用 println("在delayed方法内") println("参数:"+ t) t }}
执行结果:
在delayed方法内
获取时间,单位为纳秒
参数:24297258404397
获取时间,单位为纳秒
阅读全文
0 0
- scala 传名调用call-by-name
- Scala 函数传名调用(call-by-name)
- Scala 学习笔记(一)------函数传名调用(call-by-name)
- Scala从零开始:函数参数的传名调用(call-by-name)和传值调用(call-by-value)
- Scala传名参数(By-Name)
- Scala函数传名调用
- call by name 与 call by value in scala
- scala中的call-by-name和call-by-value
- scala中call-by-name和call-by-value
- A simple Scala call-by-name example
- scala传值调用和传名调用
- scala函数的call-by-name和call-by-value 区别
- scala 中的def/val/lazy val/的区别,call-by-value/call-by-name
- scala def/val/lazy val区别以及call-by-name和call-by-value
- Call By Name
- Scala call-by-name evalutation (A Tour of Scala: Automatic Type-Dependent Closure Construction)
- scala by-name parameter
- Call by Name, Call by Value
- jzoj 模拟赛总结(2017.07.14)
- 为什么心跳包(HeartBeat)是必须的?
- AndroidStudio打包apk,安装失败,提示应用未安装解决
- 单例模式最优方案
- Kotlin 语法的简单介绍
- scala 传名调用call-by-name
- 【社交系统研发日记】如何在 Laravel 中 “规范” 的开发验证码发送功能 !
- CentOS 7 关闭图形界面
- Laravel基础-Illuminate所在位置
- Spring家族学习
- 最少钱币数梦幻王国
- java中会存在内存泄漏吗
- elasticsearch之Document APIs【Index API】
- POJ 3280 Cheapest Palindrome(回文,区间DP)