Clojure - 谓词

谓词是评估条件并提供 true 或 false 值的函数。 我们已经在数字章节的示例中看到了谓词函数。 我们见过像"even?"这样的函数,用于测试数字是否为偶数,或者"neg?",用于测试数字是否大于零。 所有这些函数都返回 true 或 false 值。

以下是 Clojure 中谓词的示例。

(ns clojure.examples.example
   (:gen-class))

;; This program displays Hello World
(defn Example []
   (def x (even? 0))
   (println x)
   
   (def x (neg? 2))
   (println x)
   
   (def x (odd? 3))
   (println x)
   
   (def x (pos? 3))
   (println x))
(Example)

上面的程序产生以下输出。

true
false
true
true

除了普通的谓词函数之外,Clojure 还提供了更多谓词函数。 以下方法可用于谓词。

序号 方法和说明
1 every-pred

采用一组谓词并返回一个函数"f",如果其所有组成谓词都针对其所有参数返回逻辑真值,则该函数返回 true,否则返回 false。

2 every?

如果谓词对于每个值都为 true,则返回 true,否则返回 false。

3 some

返回值集合中 x 的任何谓词值的第一个逻辑真值。

4 not-any?

如果集合中值的任何谓词逻辑上为 true,则返回 false,否则返回 true。