如何申请';或';在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
。