Clojure是否相同?如果被比较的东西实际上是同一个实例,函数只返回true?

时间:2014-09-14 11:10:59

标签: clojure

我想

(identical? x y)
如果x和y都是同一个实例,

只返回true?那么这个怎么样:

(def moo 4)
(def cow 4)

(identical? moo cow)
true

然而我认为moo和cow都是整数' 4的独立实例?是什么赋予了?

1 个答案:

答案 0 :(得分:8)

在JVM中,-128127之间的两个相等整数始终相同,因为它保持IntegerCache

这意味着-128和127之间的两个相等整数始终是Integer类的相同实例。

尝试比较不同的整数:

(identical? 4 (+ 2 2)) ; true
(identical? 127 127) ; true
(identical? 128 128) ; false

有关详细信息,请参阅this answer on Code Golf