我在玩过对象ID之后发现了这一点。

ObjectSpace._id2ref(2648)
=> :**
ObjectSpace._id2ref(6688)
=> :**
ObjectSpace._id2ref(2648) == ObjectSpace._id2ref(6688)
=> false

第一个是求幂运算符的符号;
2.send(ObjectSpace._id2ref(2648), 3)
=> 8
2.send(ObjectSpace._id2ref(6688), 3)
NoMethodError: undefined method `**' for 2:Fixnum

但是第二个不是吗?我假设它们在传递给#print之后看起来只是一样。但是有什么区别呢?其中之一是Unicode符号吗?

更新:第二个可能是关键字参数的新双splat,但我似乎无法验证这一点。

最佳答案

这些命令可能会说明问题:

ObjectSpace._id2ref(2648).class.ancestors
ObjectSpace._id2ref(6688).class.ancestors

10-06 10:00