scala – 以下命令式代码的最有效功能版本是什么?
发布时间:2020-12-16 09:09:19 所属栏目:安全 来源:网络整理
导读:我正在学习 Scala,我想知道使用 Scala的函数编程功能表达这种命令式模式的最佳方式. def f(l: List[Int]): Boolean = { for (e - l) { if (test(e)) return true } } return false} 我能想到的最好的是: l map { e = test(e) } contains true 但是效率较低,
我正在学习
Scala,我想知道使用
Scala的函数编程功能表达这种命令式模式的最佳方式.
def f(l: List[Int]): Boolean = { for (e <- l) { if (test(e)) return true } } return false } 我能想到的最好的是: l map { e => test(e) } contains true 但是效率较低,因为它在每个元素上调用test(),而命令式版本在第一个满足test()的元素上停止.是否有更惯用的函数式编程技术可以用于同样的效果?在Scala中,命令式版本似乎很尴尬. 解决方法
您可以使用exists方法:
val listWithEvens = List(1,2,3,4) val listWithoutEvens = List(1,5) def test(e: Int) = e % 2 == 0 listWithEvens.exists(test(_)) // true listWithoutEvens.exists(test(_)) // false // alternative listWithEvens.exists(_ % 2 == 0) // true 如果您不熟悉_这样使用,它相当于: listWithEvens.exists(v => v % 2 == 0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |