scala的传名参数
scala如果你想实现像if ,while等类似的控制结构,根本没有值要传入花括号{}直接的代码里。要怎么实现。
比如说,我们要实现一个断言的控制结构,myAssert(), myAssert函数参考自带参数和一个标示变量,如果标示位为false,则什么都不做,如果为true则进行正常判断。
下面是一种合理的实现:
val assertionEnable = true def myAssert( predicate: () => Boolean) = if(assertionEnable && ! predicate()) throw new AssertionError//myAssert函数的定义是合法的,也实现了这个功能,但是使用者的代码比较难看,myAssert( () => 5>3) //省略函数字面量的参数列表()和 =>之后,就比较好了。 // myAssert( 5>3) //不会有效,因为缺少 () =>
省略函数字面量的参数列表()和 =>之后,就比较好了,但是会报编译错误。
scala的传名参数可以实现我们的愿望,传名参数的定义:要开始于=> 而不是 () => ;这样就可以实现我们的
需求。定义了传名参数的函数就是传名函数。
def byNameAssert( predicate: => Boolean) = if(assertionEnable && ! predicate) throw new AssertionError byNameAssert(5>3) //有效
转载于:https://www.cnblogs.com/honeybee/p/5302643.html
scala的传名参数相关推荐
- scala的传名参数和传值参数
传名参数 传值参数 因为Scala建议如果函数的参数只有一个,可以考虑使用{}代替(),因此test和test1的调用都是{},又因为test的参数是传名参数函数,因此传入的参数是不会被执行的,而te ...
- Scala学习笔记——传名参数和传值参数
Scala传名参数和传值参数 文章目录 `Scala`传名参数和传值参数 `1.` 定义 `2.` 两者的比较 `3.` 自定义`while`循环 1. 定义 Scala的解释器在解析函数参数(fun ...
- Scala 传名参数、注解
传名参数 传名参数仅在使用时求值.在类型之前添加=>,即可令参数为传名参数. 定义传名参数 def ggg(kkk: => Int) = kkk * 999 传名参数的优势在于,如果函数体 ...
- Scala 传名参数和传值参数
Scala 传名参数和传值参数 传名参数 call-by-name 传值参数 call-by-value 在Scala中,当参数通过传值调用函数时,它会在调用函数之前计算一次传入的表达式或参数值.但是 ...
- scala控制抽象之传名参数(名调用)
我们在用scala定义函数时,一般参数都是各种类型的值,这是常见的值调用 但偶尔也有需要把代码块作为参数传入的情况(名调用) 匿名函数经常可以作为函数的参数传入,非匿名函数也行(函数作为返回值返回就更 ...
- 【值传递和引用传递之外的第三种传值方式 - 传名参数】
引言 先看下Scala 的以下方法该如何调用那? class Demo {val assertIsOpen = truedef test(isTrue: () => Boolean): Unit ...
- Scala传名参数(By-Name)
1.=> 在了解Scala的By-Name参数之前,先了解下"=>"在Scala中有几种用法: 1.对于值,"=>"相当于lambda表达式. ...
- scala 柯里化+传名参数+递归 实现while关键字功能
目录 代码实现 解读 代码实现 object Lambda {def main(args: Array[String]): Unit = {def myWhile(condition: => B ...
- scala的传值参数和传名参数
object ScalaDemo extends App{var n = 10def count:Int = {n -= 1n}def invokeByName(x : => Int):Unit ...
最新文章
- uniapp自定义顶部导航组件
- MyEclipse10安装SVN插件的几种方法
- 双向绑定v-bind
- 基于注解风格的Spring-MVC的拦截器
- NVIDIA Tesla K40C 的各项性能参数
- 易用性软件测试用例,易用性、界面测试用例
- 高并发大流量,大麦抢票的技术涅槃之路
- 响应式美容美发形象设计艺术教育学校网站织梦模板源码
- 数据结构之队列的应用-超好玩的汽车加油站模拟器(C语言)
- 如何编辑styleGAN生成的图像的属性
- C++ Boost库分类总结
- noip2018翻车记
- 网络安全等级保护行业政策汇总
- Disconnected:No supported authentication methods available
- python怎么取共轭_python print出共轭复数的方法详解
- 区块链各种共识机制对比与分析
- ERP简单介绍(转)
- DOS下常用BAT(cmd)命令
- Tensorflow学习笔记(六)均方误差损失函数,MSE
- java程序在运行时,总是出现冲突的错误的解决办法。
热门文章
- MVC layout 命名空间引用问题
- 百度搜索,你画了好大一张饼,你还打算欺骗多少人呢?有图为证
- start for graduate studies career path
- just have a view of the open source project i contributed!!!
- 和身体和谐相处的经验
- [51nod]1229 序列求和 V2(数学+拉格朗日差值)
- ES6相关特性的整理(变量数据结构)
- String比较? 用==判断两个字符串,有时为true有时为false
- BZOJ4943 洛谷3823 UOJ315:[NOI2017]蚯蚓排队——题解
- 免费OA系统品牌有那些?