scala 传值参数和传名参数 ():=>和:=>
2015-09-18 19:09
323 查看
传值参数代码示例:
传名参数的示例:
因为scala建议如果函数的参数只有一个,可以考虑使用{}代替(),因此test和test1的调用都是{},又因为test的参数是传名参数函数,因此传入的参数是不会被执行的,而test1的参数是传值参数,因此需要先计算参数的值,然后再传入test1的方法体中,恰好test1传入参数的计算结果是一个匿名函数,因此可以执行,如果test1的传入参数的计算结果不是函数,那么就会报错。所以test和test1的调用,输出结果有所不同。
文章参考 :
=>Unti和:=>的区别http://scalagroup.group.iteye.com/group/topic/26303, 当然本片文章的内容介绍的是:=>和():=>的区别。
而=>Unit和:=>的区别是,() => Unit是一个函数,=> Unit 是一个执行结果为Unit的表达式。
def test1(code: ()=>Unit){ println("start") code() //要想调用传入的代码块,必须写成code(),否则不会调用。 println("end") } test1 {//此代码块,传入后立即执行。 println("1111") ()=>{println("2222")} } 输出内容: 1111 start 2222 end
传名参数的示例:
def test(code : => Unit){ println("start") code // 这行才会调用传入的代码块,写成code()亦可 println("end") } test{// 此处的代码块不会马上被调用 println("1111") println("2222") } 输出结果: start 1111 2222 end
因为scala建议如果函数的参数只有一个,可以考虑使用{}代替(),因此test和test1的调用都是{},又因为test的参数是传名参数函数,因此传入的参数是不会被执行的,而test1的参数是传值参数,因此需要先计算参数的值,然后再传入test1的方法体中,恰好test1传入参数的计算结果是一个匿名函数,因此可以执行,如果test1的传入参数的计算结果不是函数,那么就会报错。所以test和test1的调用,输出结果有所不同。
文章参考 :
=>Unti和:=>的区别http://scalagroup.group.iteye.com/group/topic/26303, 当然本片文章的内容介绍的是:=>和():=>的区别。
而=>Unit和:=>的区别是,() => Unit是一个函数,=> Unit 是一个执行结果为Unit的表达式。
相关文章推荐
- crontab 里不能运行expdp
- 【iOS】UIViewController生命周期
- Android EditText监听只能输入2位小数
- 《Linux内核设计的艺术》总结:开机加电到main执行
- 二叉树的非递归遍历
- 搭建嵌入式QT开发环境
- ID3决策树---Java
- mesa解析2 显卡驱动软件架构
- Debian系统自定义配置ip和eth0。
- How can I use Microsoft Visual C++ 2010 to create MEX files with MATLAB 7.10 (R2010a)?
- linux命令注解
- Boto:利用Python将自动化机制引入AWS服务
- 输出乘法口诀表
- 云海飞翔lee -- UIAlertController
- 利用python批量下载美拍视频
- CSS中flexbox的使用技巧及相关的移动web布局优化
- Objective-C 【简单的单例模式引入】
- 交叉编译mtd-utils方法
- 学着数据库,我怎么突然冒出一个问题:数据有没有重量?
- Linux+Apache+Nginx+MySQL+PHP 前后端 部署 生产环境