为什么;每一个;有'';其中为;“一些”;没有'';在Clojure?
在clojure的为什么;每一个;有'';其中为;“一些”;没有'';在Clojure?,clojure,Clojure,在clojure的every?和某些功能中使用“?”有什么根本区别 user> (every? true? [true true false]) false user> (some true? [true false false]) true 谢谢。every?返回true或false,因此它会得到一个问号some不返回布尔值,它返回“pred返回的第一个逻辑真值”,否则返回nil 我举了一个蹩脚的例子: user=> (some #(if (= 0 %) 1 0) [1
every?
和某些功能中使用“?”有什么根本区别
user> (every? true? [true true false])
false
user> (some true? [true false false])
true
谢谢。every?
返回true或false,因此它会得到一个问号some
不返回布尔值,它返回“pred返回的第一个逻辑真值”,否则返回nil
我举了一个蹩脚的例子:
user=> (some #(if (= 0 %) 1 0) [1 3 5 0 9])
0
集合中的第一个元素被传递到谓词中,谓词的计算结果为0,这在逻辑上是真的,因此some
返回0。您可以看到某些
没有返回true或false
因此,every?
会得到一个问号,因为它返回true或false。
some
返回由pred
或nil返回的值,因此不会得到问号 有些不一定返回布尔值,而每个?总是这样。见
返回coll中任意x的第一个逻辑真值(pred x),
否则零。例如,一种常见的习惯用法是使用集合作为pred
如果:fred在序列中,则返回:fred,否则返回nil:
(一些{:弗雷德}coll)
谢谢我又试了一个,说得很清楚(一些{2 3 4 5}[2 3 4 5 6])
给出o/p2
。我希望some
返回布尔值。啊。无论如何,谢谢。@nestle:这是一个更好的例子另外,如果您确实想使用some返回布尔值,您可以将其包装在布尔函数中:(boolean(some#{2 3 4 5}[2 3 4 5 6])=>true