¿O este método simplemente indica un número entero único que tiene cada objeto?¿El método object_id de ruby se refiere a la ubicación de la memoria?
Respuesta
bueno, depende de lo que quiere decir con "ruby";) En jruby es solo un entero único hasta donde yo sé.
Además, cosas como los números no son la ubicación de la memoria. Olvidé todos los detalles y estoy seguro de que alguien se los dará.
irb(main):020:0> 1.object_id
=> 3
irb(main):021:0> (2-1).object_id
=> 3
En el rubí "normal" (MRI 1.8.x y 1.9.x) tiene un valor único.
Este es también el caso en IronRuby
Es una combinación de muchos parámetros, el valor, tipo de objeto, lugar en la memoria.
Puedes leer más here
No es una referencia directa a la ubicación de la memoria y de la "codificación" es específico de una aplicación particular, Ruby. Si puede leer el código C, puede resultarle instructivo observar los métodos rb_obj_id
y id2ref
en gc.c
en la fuente Ruby 1.8.6. También puede leer más sobre la "codificación" en la sección "Objetos incrustados en el VALOR" de la traducción parcial del Ruby Hacking Guide chapter 2.
[Enlace al origen de MRI.] (http: // rxr. whitequark.org/mri/source/gc.c#3158) –
Vale la pena señalar que se puede realizar una búsqueda inversa de ID de objetos usando:
ObjectSpace._id2ref(object_id)
Por ejemplo:
ObjectSpace._id2ref(0) #=> false
ObjectSpace._id2ref(1) #=> 0
ObjectSpace._id2ref(2) #=> true
ObjectSpace._id2ref(3) #=> 1
ObjectSpace._id2ref(4) #=> nil
- 1. Método de Ruby como `self` que se refiere a la instancia
- 2. En Ruby, ¿a qué se refiere el "receptor"?
- 3. WebSocket escalabilidad, la radiodifusión se refiere a
- 4. En clojure, ¿(= 'a' a) se refiere al 'mismo átomo'?
- 5. ¿A qué se refiere el "día cero"?
- 6. ¿A qué se refiere `this`?
- 7. Determine si la ubicación de la memoria está en la memoria caché de la CPU
- 8. Se refiere a la propiedad en C#. ¿Reflexión? ¿Genérico? ¿Tipo?
- 9. Determine la ubicación de Ruby Gems
- 10. La palabra clave vinculante se refiere a qué?
- 11. ¿Se puede descargar a la memoria interna?
- 12. ¿A qué se refiere el "yo" en un @classmethod?
- 13. Cómo obtener la tabla una clave externa se refiere a
- 14. ¿A qué se refiere el argumento String 'volumeName' de MediaStore.Audio.Playlists.Members.getContentUri?
- 15. Problema de eclipse: el proyecto se refiere a sí mismo
- 16. Accediendo a la dirección de memoria de objetos en ruby ...?
- 17. Cargando la DLL desde una ubicación en la memoria
- 18. Copiar bloques de memoria a otra parte de la memoria
- 19. ¿Cómo puedo cambiar la variable a la que se refiere una referencia de C++?
- 20. Escrituras concurrentes en la misma ubicación de memoria global
- 21. ¿Cómo se usa/se refiere a la negación de una función booleana en Scala?
- 22. Acceso a la memoria no válida de la ubicación en Java
- 23. Win 7 DllImport C# Error impar, ¿Acceso no válido a la ubicación de la memoria?
- 24. ¿A qué se refiere el término Clang TOT?
- 25. ¿Puedo o DEBO encontrar un objeto mediante el atributo object_id en ruby?
- 26. Windows Azure Emulator "Acceso no válido a la ubicación de la memoria".
- 27. la igualdad frente a la igualdad de ubicación
- 28. Android: ¿a qué se refiere este mensaje de advertencia? - (WebCore)
- 29. Copie el archivo desde la ubicación de configuración a otra ubicación en wix en la instalación
- 30. ¿Podemos asignar un valor a una ubicación de memoria dada?
Fixnum se almacena en el bit object_id movido a la izquierda y con la conjunto de bits menos significativo, consulte http://stackoverflow.com/questions/2402228/accessing-objects-memory-address-in-ruby/2402440#2402440 Su '(2-1)' no tiene sentido, intente esto en cambio '(4711 >> 1) .object_id' –