Oppure questo metodo indica solo un numero intero univoco di ciascun oggetto?Il metodo object_id di ruby si riferisce alla posizione di memoria?
risposta
beh, dipende da cosa intendi per "rubino";) In jruby è solo un numero intero unico per quello che posso dire.
Inoltre, cose come i numeri non sono la posizione della memoria. Ho dimenticato tutti i dettagli e sono sicuro che qualcuno te li darà.
irb(main):020:0> 1.object_id
=> 3
irb(main):021:0> (2-1).object_id
=> 3
In "normale" rubino (MRI 1.8.xe 1.9.x) è solo un valore univoco.
Questo è anche il caso in IronRuby
Si tratta di una combinazione di molti parametri, valore, tipo di oggetto, posto in memoria.
Maggiori informazioni possono essere lette here
Non è un riferimento diretto alla locazione di memoria e la "codifica" è specifico per una particolare implementazione rubino. Se riesci a leggere il codice C, potresti trovare istruttivo esaminare i metodi rb_obj_id
e id2ref
in gc.c
nell'origine Ruby 1.8.6. Puoi anche leggere ulteriori informazioni sulla "codifica" nella sezione "Oggetti incorporati in VALUE" della traduzione parziale di Ruby Hacking Guide chapter 2.
[Collega a sorgente MRI.] (http: // rxr. whitequark.org/mri/source/gc.c#3158) –
vale la pena notare che è possibile eseguire una ricerca inversa di ID oggetto utilizzando:
ObjectSpace._id2ref(object_id)
Ad esempio:
ObjectSpace._id2ref(0) #=> false
ObjectSpace._id2ref(1) #=> 0
ObjectSpace._id2ref(2) #=> true
ObjectSpace._id2ref(3) #=> 1
ObjectSpace._id2ref(4) #=> nil
- 1. Metodo ruby come `self` che si riferisce all'istanza
- 2. In Ruby, a cosa si riferisce il "destinatario"?
- 3. JavaScript si riferisce alla finestra anziché alla funzione oggetto all'interno
- 4. pip3.4 -V si riferisce alla installazione python2.7
- 5. Qual è l'uso di java.lang.Class e in che modo si riferisce alla sincronizzazione del metodo statico?
- 6. Come eseguire il debug di carico DLL fallita: Accesso non valido alla posizione di memoria
- 7. In clojure, is (= 'a' a) si riferisce allo 'stesso atomo'?
- 8. Modello di memoria in Ruby
- 9. A cosa si riferisce il valore restituito da arrayIndexScale?
- 10. Come il principio di singola responsabilità si riferisce al modello di dominio anemico/ricco?
- 11. Come verificare se il nome host si riferisce alla macchina locale
- 12. La versione del pacchetto di base si riferisce alla versione GHC?
- 13. La "versione" nel repository git di Composer si riferisce alla versione (tag) su GitHub?
- 14. Perché il metodo __init__ del contatore si riferisce a un descrittore?
- 15. perché in questo semplice test la velocità del metodo si riferisce all'ordine di attivazione?
- 16. Errore in Eclipse: il metodo ... dal tipo ... si riferisce al tipo mancante Entry
- 17. Variabile JavaScript posizione memoria
- 18. A cosa si riferisce il nome di "Julia" (il linguaggio di programmazione)?
- 19. Rotaie attr_accessible: oggetto vs: object_id
- 20. Si tratta di un bug nel metodo Array.fill in Ruby?
- 21. A cosa si riferisce "sé" in un @classmethod?
- 22. posizione iniziale di memoria in C
- 23. Gerarchia di chiamata metodo ruby
- 24. cosa fa questa informazione di wirehark si riferisce a
- 25. Passare il file di script ruby alla console di rails
- 26. Quale limite di std :: async si riferisce a Stroustrup?
- 27. Ruby: Impossibile allocare memoria
- 28. Confronto di memoria (con posizione differenza)
- 29. In che modo il sollevamento (in un contesto di programmazione funzionale) si riferisce alla teoria delle categorie?
- 30. Cos'è Swagger e si riferisce a OData?
Fixnum vengono memorizzati nel bit object_id spostato verso sinistra e con la set di bit meno significativo, vedi http://stackoverflow.com/questions/2402228/accessing-objects-memory-ad-ress-in-ruby/2402440#2402440 Il tuo '(2-1)' non ha senso, prova questo invece '(4711 >> 1) .object_id' –