欢迎!请访问关于页面以了解工作原理的更多信息。
关于 clojure.core/= 的文档表示它以类型无关的方式比较数字。实际上,比较是基于类型的。如果上述说法是正确的,那么 (= 1 1.0) 应该评估为 true,而不是 false;
clojure.core/=((链接:x) (链接:x y) (链接:x y & more))相等性。如果 x 等于 y,则返回 true;如果不等于,则返回 false。与Java x.equals(y) 相同,但它还适用于 nil,并且以类型无关的方式比较数字和集合。Clojure 的不可变数据结构将 equals()(以及因此 =)定义为值,而不是标识符,比较。
由:gfredericks 评论:
对于不了解此类内容的人来说,文档说明确实具有误导性。数字可能是人们首先想到的“类型无关方式”的典型例子。也许简要提到 {{==}} 函数会有所帮助。
评论人:bordatoue
我发现==函数很令人困惑例如(== 1 1.0) => true(== 1 1.0M) => false ; 这段比较有什么错误?
文档中说如果所有num有相等的值(类型无关),则返回非nil
评论人:alexmiller
@George - 最后那个例子(== 1 1.0M)实际上是一个bug,但在1.6版本中已修复,将返回true。