为什么"每个人?" 具有 '?' "某些"没有'?'的地方 在Clojure?

nis*_*002 9 clojure

拥有'?'的根本区别是什么?在every?和不在some的Clojure的功能呢?

user> (every? true? [true true false])
false

user> (some true? [true false false])
true
Run Code Online (Sandbox Code Playgroud)

谢谢.

Nat*_*hes 14

every?返回true或false,因此它会得到一个问号.some不返回布尔值,它返回"由pred返回的第一个逻辑真值",nil否则返回.

这是我提出的蹩脚例子:

user=> (some #(if (= 0 %) 1 0)  [1 3 5 0 9])
0 
Run Code Online (Sandbox Code Playgroud)

集合中的第一个元素被传递到谓词中,谓词的计算结果为0,逻辑上为true,因此some返回0.您可以看到some不返回true或false.

因此every?得到一个问号,因为它返回true或false. some返回由pred或返回的值,因此它不会得到问号.