拥有'?'的根本区别是什么?在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或返回的值,因此它不会得到问号.