scala> val l = List()
l: List[Nothing] = List()
scala> l.forall(x=>false)
res0: Boolean = true
scala> l.forall(x=>true)
res1: Boolean = true
scala> l.exists(x=>false)
res2: Boolean = false
scala> l.exists(x=>true)
res3: Boolean = false
Run Code Online (Sandbox Code Playgroud)
对于2以上的谓词,既然列表中没有元素,那么forall如何返回true?我很迷惑.你能帮忙解释一下吗?
Ale*_*ula 15
你可以改写一下,这forall
意味着列表中没有任何元素违反了给定的谓词.如果没有元素,则 没有任何元素违反它.
forall
如果集合为空,则显式返回true 的源代码:
def forall(p: A => Boolean): Boolean = {
var these = this
while (!these.isEmpty) {
...
}
true
}
Run Code Online (Sandbox Code Playgroud)
选择这些方法的语义与形式逻辑中的通用和存在量词的语义相一致.
方法forall
充当通用量词 - true
如果集合中没有谓词所在的元素,它将返回false
.如果没有元素,那么谓词永远不会是假的并且forall
是真的.
方法exists
充当存在量词.它返回true
如果存在的量,谓词是至少一种元素是true
.如果没有元素,那么谓词永远不会为真并exists
返回false.
归档时间: |
|
查看次数: |
7541 次 |
最近记录: |