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

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

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

为什么nil.id是4? (或者如果你想挑剔的话可以用nil.object_id)

4 Solutions collect form web for “在Ruby中,为什么nil.id返回4?”

这是因为nil是在语言初始化时创build的对象,并且该对象的id恰好总是4。

有关为什么id恰好是4的更多信息,请参阅此博客文章。

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

发生这种情况是因为每个对象的id都必须以某种方式在C Ruby解释器中表示。 数字被映射到(数字* 2)+1,真实性得到0,虚假得到2,没有剩下4。 这只是一个奇怪的实现问题或泄漏抽象。 除非你想写一个Ruby解释器,否则你不应该担心。

如果你正在尝试这个irb你得到4

 irb >> NIL.id (irb):7: warning: Object#id will be deprecated; use Object#object_id => 4 

ruby日本人设置nil方法调用它返回4他们设置为“危险”或“死亡”的语言标准,

  • 如何从ApplicationHelper调用ApplicationController方法
  • gem install:无法构buildgem原生扩展(无法find头文件)
  • 为什么在Windows上ruby比较慢?
  • 修改ruby哈希到位(轨道强劲的参数)
  • Ruby与计算机科学相关的良率特征
  • 在Ruby中从DateTime减去n个小时
  • 如何用另一个键replace散列键
  • Ruby on Rails的“MySQL服务器已经消失”了
  • 等效的.try()散列,以避免“未定义的方法”错误的零?
  • 在大型Rails应用程序中加速RSpectesting
  • Sinatra与Rails