每一个? Clojure 中的身份

every? identity in Clojure

我不明白为什么 every?identity 的组合在以下两个示例中给出不同的结果。它似乎在 true false 集合上调用它时给出了预期的答案,但没有数字和字符串:

(every? identity [1 2 3 4])=> true

(every? identity [true true false])=> false

在后一种情况下,every? 会 return false 是有意义的,因为测试集合中的一个元素是 false;即:

=> (identity false)
false

every? 穿过矢量并遇到上述应用程序时,它看到了一个虚假值,所以 return 就是这样。

=> (doc every?)
-------------------------
clojure.core/every?
([pred coll])
  Returns true if (pred x) is logical true for every x in coll, else
  false.

这是来自每个的 clojure 文档?:

Returns true if (pred x) is logical true for every x in coll, else false.

通过对数组内的 false 值求值 (identity),你会得到 false,因为 false 的身份是 false。