在Clojure中,true?
函数和boolean
函数有什么区别?true是什么区别?和布尔值
我从一个差确实存在的源代码中看到(已删除的元信息):
(defn boolean [x] (clojure.lang.RT/booleanCast x))
(defn true? [x] (clojure.lang.Util/identical x true))
在Clojure中,true?
函数和boolean
函数有什么区别?true是什么区别?和布尔值
我从一个差确实存在的源代码中看到(已删除的元信息):
(defn boolean [x] (clojure.lang.RT/booleanCast x))
(defn true? [x] (clojure.lang.Util/identical x true))
正如你可以从源代码看,true?
返回true
如果值相同true
。如果数值仅为truthy(除false
和nil
之外的所有数值),则返回返回true
。
=> (map true? [true 0 1 :a])
(true false false false)
=> (map boolean [true 0 1 :a])
(true true true true)
功能boolean
被转换为Clojure的布尔值true
或false
一个类型。它按照if
及其所有后代:nil
和false
行使的真实性原则起作用;其他一切都是真实的。
你可以把它定义为
(defn boolean [x]
(case x
(nil false) false
true))
功能true?
确定参数是否是Clojure的价值true
。你可以把它定义为
(defn true? [x] (identical? true x))
因此(boolean :whatever)
是true
,而(true? :whatever)
是false
。
有一些脏东西在表面下潜伏着,由于Java的允许创建新 Boolean
对象。更晚。
['if'](http://clojure.org/reference/special_forms#if)的官方文档中包含了真值(强制为布尔值),['true?']( https://clojuredocs.org/clojure.core/true_q)和['boolean'](https://clojuredocs.org/clojure.core/boolean)在ClojureDocs上覆盖。 –