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)

War es hilfreich?

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“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top