根据我对apply的理解,它解压缩列表并将元素转换为函数的参数.
我看到(apply + [1 2 3])按预期工作,即:它相当于(+ 1 2 3).
为什么(apply或[true false])无效?是不是等同于(或真假)?
Chu*_*uck 20
因为or
是宏,不是正常功能.您可以获得相同的效果(some identity [true false])
.
作为一种替代或者您可以使用(有些谓词科尔)。
clojure.core / some([pred coll])
返回coll 中任何x的(pred x)的第一个逻辑真值,否则返回nil。一个常见的习惯用法是使用set作为pred,例如,如果:fred在序列中,它将返回:fred,否则返回nil:(某些#{:fred} coll)