Clojure中是否存在 and
和 or
的非宏版本?
更新:在这种情况下,我不在乎短路。
最佳答案
or
函数 some
“为coll中的任何x返回(pred x)的第一个逻辑真值,否则返回nil。”
因此,您可以将(some identity coll)
用作or
。请注意,当最后一个值为or
时,其行为将与false
不同:它将返回nil
,而or
将返回false
。
and
如果您不需要知道coll
向量中最后一个形式的值,则可以将(every? identity coll)
用作and
。这与and
宏的行为不同,如果所有参数都为真,则返回true
。如果您需要最后一张表格的结果,请参阅larsmans的答案。
关于clojure - Clojure "and"和 "or"的非宏版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5531964/