==
для сравнения чисел. Если один из его аргументов не является числом, он всегда будет возвращать false:
(== :a :a)
; => false
Как вы можете видеть, сказав (clojure.contrib.repl-utils/source ==)
в REPL (конечно, с repl-utils
require
'd), ==
вызывает 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);
}
Используйте =
для сравнения равенства вещей, которые могут не быть числами. Когда вы на самом деле имеете дело с числами, ==
должен быть несколько быстрее.