我对所有 ruby 对象中存在的一种先天方法的工作感到困惑,即 object_id 方法。当我一次又一次地在任何 Fixnum 对象上运行 object_id 方法时,例如在 irb 中,如果我这样做,
>>100.object_id
=>201
再做一次,
>>100.object_id
=>201
但是,例如,当我使用 String 对象时
>>“你好”.object_id
=>162333336
再做一次,
>>“你好”.object_id
=>15502236
为什么这样?在 ruby 中,一切都是对象,每个对象都有一个名为 object_id 的固有方法,该方法唯一地标识该对象。但是在这里,ruby 让我感到困惑,因为它将具有相同文本(即“Hello”)的两个字符串视为不同,但具有相同值(即 100)的两个 Fixnum 对象相同,并为它们提供相同的对象 ID。为什么这样?谁能帮帮我吗?