A karakterlánc primitív típus; amikor meghívja a karakterláncot, új objektumazonosítója van. A szimbólum egy hivatkozott típus; amikor szimbólumot hoz létre, létrehoz egy mutatót, amely az értékre mutat.
A szimbólumokat változókban tároltam:
var1 = :foo
var1.object_id # => 2598748
:foo.object_id # => 2598748
var2 = :foo
var2.object_id # => 2598748
var2 = "hello"
var2.object_id # => 70131755422100
Hogyan lehetséges, hogy létrehozok egy második változót var2
, és annak ugyanaz az objektumazonosítója, mint a var1
? Létrehozok egy második elemet. Ez azt jelenti, hogy a változók egyben mutatók is?
Mindkét változó a :foo
szimbólumra mutat. A :foo
szimbólum csak egyszer kerül tárolásra, igaz?
Két változó jön létre, tehát a memóriában kell lenniük, és nem lehetnek ugyanazon a helyen, mert más a nevük. var1
és var2
tárolni kell, hogy később felhívhassam őket. Nem értem, hogyan hívhatom őket, ha ugyanaz az objektumazonosítójuk. Ha valaki tudna segíteni ennek megértésében, megköszönném.