在Scala重新使用警卫
发布时间:2020-12-16 09:20:48 所属栏目:安全 来源:网络整理
导读:我经常发现自己想在scala中重用保护评估的结果,例如 blah match { case Blah(a,b) if expensive(a) 10 = expensive(a) case _ = b} 这是否可能使用一些不太知名的咒语? (把@上昂贵的不行) 这可能会在不久的将来吗? 解决方法 您可以使用自定义提取器执行类
我经常发现自己想在scala中重用保护评估的结果,例如 blah match { case Blah(a,b) if expensive(a) < 10 => expensive(a) case _ => b } 这是否可能使用一些不太知名的咒语? (把@上昂贵的不行) 这可能会在不久的将来吗? 解决方法
您可以使用自定义提取器执行类似操作.这应该工作:
case class Blah(a: Int,b: Int) object expensive { def unapply(x: Int): Option[Double] = Some(math.cos(x)) } Blah(1,1) match { case Blah(a @ expensive(e),b) if e < 10 => println(a,b,e) case _ => println("nothing") } 确保昂贵的创建一个Option对象真的更贵,这是上面的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Angular2 – OnInit:从Service’subscribe函数返
- twitter-bootstrap – Navbar下拉列表无法在移动
- scala – Joda时间:将UTC转换为本地
- twitter-bootstrap – 如何在Bootstrap中为输入字
- Bootstrap中的datetimepicker(日期控件)用法
- webservice(cxf+axis)两种框架生成客户端代码
- unix – 如何创建socket类型的特殊文件?
- 理解亚马逊 Amazon AWS CloudFormation
- twitter-bootstrap – 响应式导航栏无法正常工作
- angularjs – 无法使量角器等待现有元素可点击(c
热点阅读