谓词
Clojure 提供了很多函数来充当谓词的功能 — 测试条件是否成立。它们的返回值是 true或者false。在Clojure里面 false
以及 nil
被解释成false. true
以及任何其他值都被解释成true, 包括0。谓词函数的名字一般以问号结尾。
反射是一种获取一个对象的特性,而不是它的值的过程。比如说对象的类型。有很多谓词函数进行反射。 测试一个对象的类型的谓词包括 class?
, coll?
, decimal?
, delay?
, float?
, fn?
, instance?
, integer?
, isa?
, keyword?
, list?
, macro?
, map?
, number?
, seq?
, set?
, string?
以及 vector?
。 一些非谓词函数也进行反射操作,包括: ancestors
, bases
, class
, ns-publics
以及 parents
。
测试两个值之间关系的谓词有: <
, <=
, =
, not=
, ==
, >
, >=
, compare
, distinct?
以及 identical?
.
测试逻辑关系的谓词有: and
, or
, not
, true?
, false?
和 nil?
测试集合的一些谓词在前面已经讨论过了,包括: empty?
, not-empty
, every?
, not-every?
, some?
以及 not-any?
.
测试数字的谓词有 even?
, neg?
, odd?
, pos?
以及 zero?
.