Types 布尔的等价物是什么?在Clojure
Scheme支持Types 布尔的等价物是什么?在Clojure,types,clojure,boolean,Types,Clojure,Boolean,Scheme支持boolean?测试符号或值是否为boolean类型 (boolean? #\t) (boolean? #\f) 在Clojure中,我只能找到整数?、数字?、列表?等,但没有布尔值? 在Clojure中,boolean?的等价物是什么?您可以这样做 (defn boolean? [x] (instance? Boolean x)) 如果您在类型领域,并且想知道某个东西是否是布尔值,那么正如Shlomi所发布的那样,您可以从instance?轻松地创建boolean?函数
boolean?
测试符号或值是否为boolean类型
(boolean? #\t)
(boolean? #\f)
在Clojure中,我只能找到整数?
、数字?
、列表?
等,但没有布尔值?
在Clojure中,boolean?
的等价物是什么?您可以这样做
(defn boolean? [x]
(instance? Boolean x))
如果您在类型领域,并且想知道某个东西是否是布尔值,那么正如Shlomi所发布的那样,您可以从
instance?
轻松地创建boolean?
函数。以下是varargs版本:
(defn bools?
[& xs]
(every? (partial instance? Boolean) xs))
有产出:
>> (bools? true) => true
>> (bools? true false) => true
>> (bools? true nil) => false
我从来不需要这样做,因为我只处理过价值观和clojure中的所有内容都是“真实的”,除了false或nil。- 在Clojure中,所有的值都是逻辑的:对一个及其所有子代的第一个有效参数。从这个意义上说,一切都是布尔的李>
- 唯一的假值是
和nil
本身。尽管false
,一个包含Boolean/FALSE
和FALSE
-一个新的(Boolean)的静态对象。 false)
对象,包含布尔值
-求值 错。最后一个与我阅读文档的方式不一致,但这是正确的 什么样的光桌给我看。我想说的是,不要构建你的 拥有false
s。为什么Java允许它,我无法理解李>Boolean
- 我从未遇到过逻辑需要知道的情况
集合中是否有内容
。如果你需要这样做, 跟着李>{true-false}
- 许多标准函数产生
,而不产生任何结果或失败。对于 例如,应用于非成员的集合。在这种情况下,您可能会发现 您自己使用nil
测试nil?
,尤其是nil
将是一个有效且不同的值false
(defn boolean? [x]
(or (true? x) (false? x)))
(defn bool?[x](=x(boolean x))
因为在clojure.core
中有一个谓词函数,所以请记住true
不是唯一的真值,false
不是唯一的假值。你可能知道。这只是对以后阅读此内容的新手的一个警告。虽然通常情况下,这样做的必要性似乎是无效的,但有一种情况是,如果要向程序输入命令行选项(如调试标志),则需要这样做。在这种情况下,编码人员希望确保用户清楚地设置了一个真值,并且没有意外地提供一些非假值。是否有一个x值可以使该函数返回假值?我想不管你给它什么,它都会变成现实。false为false,null为false,您可以为其提供的所有其他内容均为truthy。除Boolean.TRUE和Boolean.false之外的所有值均使此函数返回false。阅读真实的文档?那是假的吗?。它们正是用来区分真实性和真实的布尔值的。这很好,也适用于Clojurescript(我刚刚在cljs和clj REPLs中进行了测试)。