Clojure 中的逻辑与
Logical AND in Clojure
Clojure的逻辑and
和普通的逻辑and
(&&)有区别吗?为什么这会产生 true
((and odd? #(> 10 %)) 6)
难道 and
不需要 2 个正确的语句才能 return 正确吗?
and
不一定 return true
。如果任何给定元素是 false
或 nil
,它实际上是 returns false
或 nil
。如果其中 none 个是,那么它 return 是最后一个元素(它不是 return true)。
在您的情况下,and
return 是函数 #(> 10 %)
(仅此而已),然后应用于 6
,结果为真。这是因为这两个函数既不是 nil
也不是 false
。
以下是这些步骤的运作方式:
((and odd? #(> 10 %)) 6)
(#(> 10 %) 6)
;; => true
您正在寻找的是组合谓词函数:
((every-pred odd? #(> 10 %)) 6) ;; => false
仅供参考:还有它的补充“or
”:some-fn
。
Clojure的逻辑and
和普通的逻辑and
(&&)有区别吗?为什么这会产生 true
((and odd? #(> 10 %)) 6)
难道 and
不需要 2 个正确的语句才能 return 正确吗?
and
不一定 return true
。如果任何给定元素是 false
或 nil
,它实际上是 returns false
或 nil
。如果其中 none 个是,那么它 return 是最后一个元素(它不是 return true)。
在您的情况下,and
return 是函数 #(> 10 %)
(仅此而已),然后应用于 6
,结果为真。这是因为这两个函数既不是 nil
也不是 false
。
以下是这些步骤的运作方式:
((and odd? #(> 10 %)) 6)
(#(> 10 %) 6)
;; => true
您正在寻找的是组合谓词函数:
((every-pred odd? #(> 10 %)) 6) ;; => false
仅供参考:还有它的补充“or
”:some-fn
。