在 REPL 上,如果我定义
(def fits (map vector (take 10 (iterate inc 0))))
然后打电话
(== [2] (nth fits 2))
我变得虚假了。
But
(= [2] (nth fits 2))
返回真。
这是预期的吗?我尝试了 (class [2]) 和 (class (nth matches 2) ,两者都返回持久向量。
==
用于比较数字。如果它的任何一个参数不是数字,它将始终返回 false:
(== :a :a)
; => false
正如你所看到的(clojure.contrib.repl-utils/source ==)
在 REPL(与repl-utils
require
当然,),==
称为equiv
的方法clojure.lang.Numbers
。的相关位clojure/lang/Numbers.java
(来自 GitHub 上最新或接近最新的提交):
static public boolean equiv(Object x, Object y){
return y instanceof Number && x instanceof Number
&& equiv((Number) x, (Number) y);
}
Use =
用于对可能不是数字的事物进行相等比较。当你实际上处理数字时,==
应该会快一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)