scala – 当对其中一个项目的检查返回false时,结束一个理解循环
发布时间:2020-12-16 19:00:21 所属栏目:安全 来源:网络整理
导读:我对 Scala有点新奇,所以道歉,如果这有点微不足道. 我有一个我想要迭代的项目列表.我要对每个项目执行一个检查,如果只有其中一个失败,我希望整个函数返回false.所以你可以看到这是一个AND条件.我想让它被懒惰地评估,即我遇到第一个虚假回报假的那一刻. 我习
我对
Scala有点新奇,所以道歉,如果这有点微不足道.
我有一个我想要迭代的项目列表.我要对每个项目执行一个检查,如果只有其中一个失败,我希望整个函数返回false.所以你可以看到这是一个AND条件.我想让它被懒惰地评估,即我遇到第一个虚假回报假的那一刻. 我习惯于for-yield语法,该语法过滤通过一些生成器(项目列表,序列等)生成的项目.然而,在我的情况下,我只想打破并返回false而不执行循环的其余部分.在正常的Java中,只会做一个返回false;在循环内. 以低效的方式(即当我遇到第一个假项目时不停止),我可以做到: (for { item <- items if !satisfiesCondition(item) } yield item).isEmpty 这基本上是说,如果没有任何项目通过过滤器,它们都满足条件.但这似乎有点复杂和低效(认为你有100万项,第一个已经不满足条件). 在Scala中做最好的和最优雅的方法是什么? 解决方法
在第一次虚假的情况下尽早停止在Scala中使用forall. (
A related question)
您的解决方案重写: items.forall(satisfiesCondition) 演示短路: List(1,2,3,4,5,6).forall { x => println(x); x < 3 } 1 2 3 res1: Boolean = false 存在与之相反的情况,一旦满足条件即停止: List(1,6).exists{ x => println(x); x > 3 } 1 2 3 4 res2: Boolean = true (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 来自Scala的参数列表中带有“…”的Java函数
- Windows批处理删除所有目录下的图片类型文件
- “正向引用扩展到价值定义”是什么意思在Scala中?
- 如何撤消“set -e”的效果,如果任何命令失败,会立即退出bas
- scala – 有没有办法从列表创建元组(没有代码生成)?
- command failed shell "ps 'uiautomator
- angular – 如何从jwt令牌获取用户角色
- YH4:Oracle Flex Clusters
- angularjs – Angular-material md-select with images或sv
- angular – Ionic 3中提供者的全局实例