すべてのrubyオブジェクトに存在する固有のメソッドの1つ、つまりobject_idメソッドの動作について混乱しています。Fixnumオブジェクトに対してobject_idメソッドを何度も実行すると、たとえばirbでこれを実行すると、
>> 100.object_id
=> 201
そしてこれをもう一度やりなさい、
>> 100.object_id
=> 201
しかし、たとえばStringオブジェクトを操作する場合
>> "Hello" .object_id
=> 162333336
そしてこれをもう一度やりなさい、
>> "Hello" .object_id
=> 15502236
なぜそうなのか?ルビーでは、すべてがオブジェクトであり、すべてのオブジェクトには、オブジェクトを一意に識別するobject_idという名前の固有のメソッドがあります。しかし、ここでは、rubyは、同じテキスト(つまり、「Hello」)を持つ2つの文字列を異なるものとして扱いますが、同じ値(つまり、100)を持つ2つのFixnumオブジェクトを同じものとして扱い、同じオブジェクトIDを与えるために混乱します。なぜそうなのか?誰か助けてくれませんか?