Frage
Dies wird mich seit geraumer Zeit nervt.
>> nil.id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4
Warum sollte nil.id sein 4? (Oder nil.object_id wenn Sie Veraltete wählerisch sein wollen)
Lösung
Das ist, weil Null ist ein Objekt erstellt, wenn die Sprache initialisiert, und dieses Objekt id geschieht immer 4 sein.
Für weitere Informationen darüber, warum die ID geschieht 4 sein, finden Sie unter diese Blog-Post.
Andere Tipps
Ich habe immer angenommen, es ein kühles Osterei war. In Japan 4 ist die Zahl des Todes
Es geschieht, weil die ID von jedem Objekt mußte irgendwie in dem C-Ruby-Interpreter dargestellt werden. Zahlen wurden abgebildet (Anzahl * 2) +1, Truthiness bekam 0, bekam Verlogenheit 2 und nil hatte 4 links. Es ist nur eine seltsame Implementierungsproblem oder undichte Abstraktion. Sie sollten sich darüber keine Sorgen, wenn Sie einen Ruby-Interpreter schreiben möchten.
Wenn Sie versuchen, dies in irb Sie 4 bekommen
irb
>> NIL.id
(irb):7: warning: Object#id will be deprecated; use Object#object_id
=> 4
In rubin Japaner auf Null gesetzt Methoden nennt es 4 gibt es Sprachstandard ist, dass sie gesetzt 4 als „gefährlich“ oder „Tod“