Scheme支持boolean?
来测试符号或值是否为布尔类型。什么是布尔等价物?在Clojure中
(boolean? #\t)
(boolean? #\f)
虽然Clojure中,我只能发现integer?
,number?
,list?
等,但没有boolean?
。
Clojure中什么是boolean?
?
Scheme支持boolean?
来测试符号或值是否为布尔类型。什么是布尔等价物?在Clojure中
(boolean? #\t)
(boolean? #\f)
虽然Clojure中,我只能发现integer?
,number?
,list?
等,但没有boolean?
。
Clojure中什么是boolean?
?
你可以做
(defn boolean? [x]
(instance? Boolean x))
如果你的类型的土地的时候,并想知道如果事情是一个布尔值,那么作为施洛米已经发布,你可以从instance?
做出boolean?
功能很轻松了。这里有一个可变参数版本:
(defn bools?
[& xs]
(every? (partial instance? Boolean) xs))
与输出:
>> (bools? true) => true
>> (bools? true false) => true
>> (bools? true nil) => false
我从来没有需要做到这一点,因为我只曾经处理了价值,事实上,一切都在Clojure是“truthy “除了虚假或零。
if
form及其后代有效的第一个参数。从这个意义上说,一切都是布尔型的。nil
和false
本身。虽然Boolean/FALSE
,一个静态对象包含false
和(Boolean. false)
- 一个新的Boolean
对象包含false
- 评估 false。这最后不符合我如何阅读文档,但那是Light Table向我展示的 。我会说避免构建你的 自己的Boolean
s。为什么Java允许它,我无法理解。#{true false}
。如果您需要这样做, 请按照Shlomi's advice。nil
为没有或失败。例如,对于 示例,一组应用于非成员。在这种情况下,您可能会发现自己使用nil?
来测试nil
,特别是其中false
将是有效且不同的值。虽然通常对此的需求看起来并不合理,但如果要将一个命令行选项(如调试标志)输入到该程序,则需要执行此操作的一种情况。在这种情况下,编码员会希望确保用户明确设定真实价值,并且不会偶然提供一些非错误价值。 – Don
另一个版本:
(defn boolean? [x]
(or (true? x) (false? x)))
有没有可以使该函数返回false的x值?我会认为不管你给它什么,它都会回归真实。假是虚假的,空是虚假的,你可以给它的一切都是真实的。 –
除了Boolean.TRUE和Boolean.FALSE之外的每个值都会使此函数返回false。阅读真实的文档?和假?它们完全是为了将真实与真正的布尔值区分开来。 –
这很好,也适用于Clojurescript(我只是在cljs和clj REPL中测试过)。 –
(defn bool? [x] (= x (boolean x)))
由于Clojure 1.9存在clojure.core
一个boolean?
谓词函数。
请记住,“真”不是唯一的真值,“假”不是唯一的假值。你可能知道这一点。这只是一个警告新手阅读此后。 – Mars