在rails 4中,对象id为nil false true?

时间:2014-04-21 13:08:17

标签: ruby-on-rails

ruby​​中nil,false,blank,true和Fixnums的对象ID是什么? 这些对象如何加载优先级。

为什么它会返回4?我知道它是4,但对象id背后的逻辑是什么?

1 个答案:

答案 0 :(得分:1)

为什么nil的对象id等于4?首先,您需要知道false和true变量的工作方式与nil完全相同。它们分别是FalseClass和TrueClass的单​​例实例。当Ruby解释器启动时,它会初始化FalseClass,TrueClass和NilClass。

结果是:

  

false.object_id   => 0

     

true.object_id   => 2

     

nil.object_id   => 4

1和3发生了什么?好吧,第一位仅用于Fixnum值(数字)。简单而一致。

要获取fixnum的对象ID,您可以遵循以下公式: object_id =(n * 2)+1 [其中n是fixnum]