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,我有一系列的价值观。我想知道它们中是否有一个是真的 (def input [nil nil nil 1 nil 1]) 我想这样做: (apply or input) 但我不能,因为或不是一个函数。同样,这也行不通 (reduce or input) 我自己写的 (def orfn #(if %1 %1 %2)) 现在这个方法奏效了 (reduce orfn input) 这种方法也略有不同,尽管它只测试nil (not (every? nil? input)) 应用或或等效的“正确

我有一系列的价值观。我想知道它们中是否有一个是真的

(def input [nil nil nil 1 nil 1])
我想这样做:

(apply or input)
但我不能,因为
不是一个函数。同样,这也行不通

(reduce or input)
我自己写的

(def orfn #(if %1 %1 %2))
现在这个方法奏效了

(reduce orfn input)
这种方法也略有不同,尽管它只测试
nil

(not (every? nil? input))

应用
或等效的“正确”方法是什么?

(一些身份[nil nil nil nil 1 nil 1])
您可以使用
一些
身份来执行此操作:

(some identity [nil nil nil 1 nil 1])
=> 1

some
返回将函数应用到序列中的第一个真实值,因此这是有效的,因为
1
是真实值。

一般情况下很好,谢谢@soulcheck。我认为解决我遇到的问题的最好办法是
some