Domanda

Questa è è stato bugging me per un bel po 'di tempo.

>> nil.id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4

Perché sarebbe nil.id essere 4? (O nil.object_id se si vuole essere pignoli su deprecati)

È stato utile?

Soluzione

Questo è dovuto al fatto nil è un oggetto creato quando la lingua inizializza, e l'ID di quella oggetto sembra essere sempre 4.

Per ulteriori informazioni sul motivo per cui l'id sembra essere 4, vedere questo post del blog.

Altri suggerimenti

Avevo sempre pensato che fosse un uovo di Pasqua cool:. In Giappone 4 è il numero della morte

E 'accade perché l'ID di ogni oggetto doveva essere in qualche modo rappresentato nell'interprete C Ruby. Numeri GOT mappati (numero * 2) +1, truthiness ottenuto 0, falsità ottenuto 2 e nil avuto 4 sinistra. E'solo un problema di implementazione strano o di astrazione che perde. Non si deve preoccupare se non si vuole scrivere un interprete Ruby.

Se si sta tentando questo IRB si stanno ottenendo 4

irb
>> NIL.id
(irb):7: warning: Object#id will be deprecated; use Object#object_id
=> 4

In giapponesi rubino incastonato sui metodi nil chiamano restituisce 4 è il linguaggio standard che si misero 4 "di pericolo" o "morte"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top