根据kotlin reference,此代码段应打印" true"
val a: Int = 10000
print(a identityEquals a)
但是当我尝试它(版本是0.12.1218)时,它会打印" false"。为什么呢?
2015/07/29更新
如果在[-128~127]中输入a,则打印" true"。正如安德烈所说,应该使用===
。
答案 0 :(得分:5)
我从安德烈·布雷斯拉夫那里找到了explain。
原因是在引擎盖下Int不是引用类型:它由原始int表示,但是当你调用identityEquals时,谁的签名是Any?.identityEquals(Any?),它们的两个操作数都被装箱了,结果我们有两个不同的对象。我们将通过为Java原语引入identityEquals的重载来解决这个问题。
到目前为止,它还没有修复。官方参考应该解释这一点。它困扰了我几个小时。
答案 1 :(得分:3)
blueColor
很快就会被弃用,请使用identityEquals