我以为
(identical? x y)
仅当 x 和 y 是同一个实例时才返回 true?那么这个呢:
(def moo 4)
(def cow 4)
(identical? moo cow)
true
但我认为 moo 和 cow 都是整数“4”的单独实例?是什么赋予了?
最佳答案
在 JVM 中,-128
和 127
之间的两个相等的整数始终相同,因为它维护 IntegerCache .
这意味着 -128 和 127 之间的两个相等的整数始终是 Integer
类的同一个实例。
尝试比较不同的整数:
(identical? 4 (+ 2 2)) ; true
(identical? 127 127) ; true
(identical? 128 128) ; false
参见this answer on Code Golf了解更多信息。
关于clojure - Clojure 相同吗?如果被比较的东西实际上是同一个实例,函数只返回 true 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832615/