fly*_*eep 62 functional-programming scala
我的Haskell*有点生疏,所以我可以想象我错过了显而易见的事情:
def any[A](s: Traversable[A], f: A => Boolean): Boolean = {
s.foldLeft(false)((bool, elem) => bool || f(elem))
}
Run Code Online (Sandbox Code Playgroud)
这些属性中的一个是否适用于它?
*实际上是SML,但这是99%相同,但在阳光下没有人知道.
mis*_*tor 104
它是预定义的并被调用exists.并且forall将是您正在寻找的"全部"功能.
scala> Vector(3, 4, 5).exists(_ % 2 == 0)
res1: Boolean = true
scala> Vector(3, 4, 5).forall(_ % 2 == 0)
res2: Boolean = false
Run Code Online (Sandbox Code Playgroud)您可以使用for带break(from scala.util.control.Breaks)的循环使其更高效.(参见标准库实现的exists和forall.)
这是正确的.
方法上可穿越特质,对等同存在any和all:
def all[A](xs: Traversable[A], p: A => Boolean): Boolean = xs forall p
def any[A](xs: Traversable[A], p: A => Boolean): Boolean = xs exists p
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30697 次 |
| 最近记录: |