我在玩对象ids后发现了这一点.
- 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