Clojureでは、true?
関数とboolean
関数の違いは何ですか?真の違いは何ですか?ブール
Iは、(メタ情報が削除)差が存在するソースコードから参照:
(defn boolean [x] (clojure.lang.RT/booleanCast x))
(defn true? [x] (clojure.lang.Util/identical x true))
Clojureでは、true?
関数とboolean
関数の違いは何ですか?真の違いは何ですか?ブール
Iは、(メタ情報が削除)差が存在するソースコードから参照:
(defn boolean [x] (clojure.lang.RT/booleanCast x))
(defn true? [x] (clojure.lang.Util/identical x true))
ソースコードからわかるように、true?
戻りtrue
値がtrue
同一ある場合。 boolean
は、値が真偽(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
であるか否かを判断します。あなたは(true? :whatever)
がfalse
であるのに対し、(boolean :whatever)
したがって
(defn true? [x] (identical? true x))
としては、
true
であることを定義することができます。
新しい Boolean
オブジェクトを作成できるようにするJavaによる表面の下に潜んでいるいくつかの不快があります。もっと後で。
真偽(ブール値への強制)については、['if'](http://clojure.org/reference/special_forms#if)の公式ドキュメントと[' true? ']の特定の動作https://clojuredocs.org/clojure.core/true_q)と['boolean'](https://clojuredocs.org/clojure.core/boolean)はClojureDocsでカバーされています。 –