Applying logical and to list of boolean values

社会主义新天地 提交于 2019-12-03 05:03:23
val l = List(true, false, false, true)
val andAll = l.foldLeft(true)(_ && _)

Instead of using foldLeft/Right, you can also use forall(identity) for the logical AND, or exists(identity) for the logical OR.

edit: The benefit of these functions is the early exit. If forall hits a false or exists a true, they will immediately return.

Without initial value as in foldLeft,

List(true, false, false, true).reduce(_&&_)

Yet this works not for List.empty[Boolean].

sfosdal

I like the forAll approach best so long as it fits your use case. It exits early which is great. However, if that doesn't fit here's another, only marginally more complex, approach.

With reduceOption you get no early exit, but you can clearly specify the value for the case where the list is empty.

val l = List(true, false, false, true)
val andAll = l.reduceOption(_ && _).getOrElse(false)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!