在Ruby中为什么nil.id返回4?

epo*_*olf 35 ruby

这已经困扰了我很长一段时间.

>> nil.id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4
Run Code Online (Sandbox Code Playgroud)

为什么nil.id会是4?(或者如果你想对弃用方面挑剔,则为nil.object_id)

dag*_*gvl 41

这是因为nil是语言初始化时创建的对象,并且该对象的id始终为4.

有关id恰好为4的原因的详细信息,请参阅博客文章.

  • 我是一名Ruby Facebook程序员,4号也是Facebook上的Mark Zuckerber ID.这导致我有史以来最奇怪的错误... ;-) (30认同)
  • 这不是我的"8"$ irb irb(主):001:0> nil.object_id => 8 irb(主):002:0> ruby​​ 2.0.0p247(2013-06-27修订版41674)[ x86_64的-darwin13.3.0] (3认同)

And*_*ers 11

我一直认为这是一个很酷的复活节彩蛋:在日本,4是死亡人数.