题
这是具有直缠着我对于相当一段时间。
>> nil.id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4
为什么会为零。id是4?(或者为零。object_id如果你想要的是挑剔弃用)
解决方案
这是因为零的一个目的是创建了当的语言,初始化,并对象的发生始终是4.
更多信息为什么id发生4,看看 此 博客。
其他提示
我一直以为这是一个很酷的复活节彩蛋:在日本4是死亡的人数
它发生,因为每一个对象的id不得不以某种方式在C Ruby解释来表示。号得到映射到(数* 2)1,感实性得到0,虚假得到2和nil有4左侧。 It's只是一个奇怪的实现问题或漏抽象。除非你想要写一个Ruby解释器,你不应该担心。
如果您在你得到4 IRB尝试这种
irb
>> NIL.id
(irb):7: warning: Object#id will be deprecated; use Object#object_id
=> 4
在上零方法设置的红宝石日本人叫它返回4它的语言标准,他们设置4个为“危险”或“死亡”
不隶属于 StackOverflow