欢迎!请查看 关于 页面以了解更多有关如何使用本网站的信息。
关于 clojure.core/= 的文档说它以类型无关的方式比较数字。实际上比较是类型依赖的。如果上述说法是真的,那么 (= 1 1.0) 应该返回 true 而不是 false;
clojure.core/=((链接:x) (链接:x y) (链接:x y & 更多))相等性。如果 x 等于 y,则返回 true,如果不等,则返回 false。与Java x.equals(y) 类似,但除了 nil 之外,它还可以在类型无关的方式下比较数字和集合。Clojure 的不可变数据结构定义 equals()(以及因此 =)为值,而不是身份,比较。
由 gfredericks 发表的评论:
对于那些不熟悉这类事物的人来说,文档确实具有误导性。数字可能是首先想到的“类型无关方式”。
评论由:bordatoue 撰写
我发现 == 函数很令人困惑例如(== 1 1.0) => true(== 1 1.0M) => false ; 这个比较有什么问题?
文档说如果数字都具有等效值(类型无关),则返回非 nil 值
评论由: alexmiller 撰写
@George - 最后那个例子(== 1 1.0M)实际上是一个在1.6版本中已修复的bug,它将返回 true。