这是具有直缠着我对于相当一段时间。

>> 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个为“危险”或“死亡”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top