Ale*_*air 13 ruby symbols splat objectid
在玩了对象id之后我发现了这个.
ObjectSpace._id2ref(2648)
=> :**
ObjectSpace._id2ref(6688)
=> :**
ObjectSpace._id2ref(2648) == ObjectSpace._id2ref(6688)
=> false
Run Code Online (Sandbox Code Playgroud)
第一个是求幂运算符的符号;
2.send(ObjectSpace._id2ref(2648), 3)
=> 8
2.send(ObjectSpace._id2ref(6688), 3)
NoMethodError: undefined method `**' for 2:Fixnum
Run Code Online (Sandbox Code Playgroud)
但第二个不知何故不是?我认为它们在传递给#print之后看起来一样.但是,什么是区别?其中一个是某种形式的unicode符号吗?
更新:第二个可能是关键字参数的新双splat,但我似乎无法验证这一点.
这些命令可能具有启发性:
ObjectSpace._id2ref(2648).class.ancestors
ObjectSpace._id2ref(6688).class.ancestors
Run Code Online (Sandbox Code Playgroud)