Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么;每一个;有'';其中为;“一些”;没有'';在Clojure?_Clojure - Fatal编程技术网

为什么;每一个;有'';其中为;“一些”;没有'';在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

在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 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/p
2
。我希望
some
返回布尔值。啊。无论如何,谢谢。@nestle:这是一个更好的例子另外,如果您确实想使用some返回布尔值,您可以将其包装在布尔函数中:(boolean(some#{2 3 4 5}[2 3 4 5 6])=>true