¿Cuál es la diferencia entre los métodos de clase y tipo en Ruby? Me di cuenta de que ese tipo funciona para encontrar el tipo de algunas clases pero no otras.clase() vs. tipo() en Ruby
Respuesta
La diferencia clave es que Object#type
está en desuso. Del RDoc para el tipo de objeto #:
Sinónimo obsoleto para Object # class.
He aquí por qué usted debe utilizar Object#class
:
devuelve la clase de obj, ahora preferido sobre objetos # tipo, como un tipo de objeto en Ruby es solamente libremente ligado a ese objeto 'clase S. Este método siempre debe invocarse con un receptor explícito , ya que la clase también es una palabra reservada en Ruby.
En realidad, es probable que quieren usar Object#respond_to?
en lugar de la comprobación de la clase de un objeto en la mayoría de los casos.
#type
es un sinónimo de #class
, pero está en desuso en ruby 1.8, y aparentemente ha desaparecido de ruby 1.9. Simplemente use #class
en todas partes.
# For ruby 1.8 $ ri Object#type ------------------------------------------------------------ Object#type obj.type => class ------------------------------------------------------------------------ Deprecated synonym for Object#class. # For ruby 1.9 $ ri1.9 Object#type Nothing known about Object#type
Si es un sinónimo, ¿por qué obtendría un error de método indefinido cuando llamo a tipo en una clase que he definido? Pero lo mismo no sucede cuando llamo al método de clase para la misma clase. El error de método indefinido no suena como lo que obtendrías por un método obsoleto. –
¿Estás en ruby 1.9? En ruby 1.8 no me sale un error, solo una advertencia sobre la desaprobación. – kch
Y si estás en ruby 1.9, bueno, desaprobar significa que se eliminará algo cuando, y parece que 1.9 es eso cuando. – kch
- 1. Python: terminología 'clase' VS 'tipo'
- 2. Clase vs Módulo en el diseño de Ruby API?
- 3. Herencia de clase de tipo herencia múltiple en ruby
- 4. ruby inheritivity vs mixins
- 5. clase clase: métodos instancia vs. clase
- 6. Ruby vs. Ruby on Rails
- 7. ruby include vs extender
- 8. Ruby/Rails: reapertura vs sobreescritura de una clase
- 9. clase de archivos vs. FileUtils Rails de Ruby
- 10. Clase de miembros estáticos vs. interfaz normal tipo c
- 11. Ruby: initialize() vs class body?
- 12. Ruby hereda la clase
- 13. ruby module_function vs including module
- 14. Estructura anulable vs clase
- 15. método vs función vs procedimiento vs clase?
- 16. Ruby Enterprise Edition vs Ruby 1.9
- 17. clojure vs. Ruby
- 18. clase estática vs clase singleton
- 19. la creación dinámica de clase en Ruby
- 20. Tipo de valor Vs Tipo de referencia - Clase de objeto C#
- 21. Método de clase global vs función vs clase estática
- 22. Variables de clase Ruby
- 23. Cuándo usar $ stderr vs STDERR en Ruby?
- 24. funciones de Ruby vs métodos
- 25. Ruby Hash.new vs Hash literal
- 26. Ruby on Rails vs Django
- 27. Expresión regular - Ruby vs Perl
- 28. Ruby Regex vs Python Regex
- 29. vs. clase auxiliar
- 30. Clase VS ref. Estructura
Si es un sinónimo, ¿por qué obtendría un error de método indefinido cuando llamo a un tipo en una clase que he definido yo mismo? Pero lo mismo no sucede cuando llamo al método de clase para la misma clase. El error de método indefinido no suena como lo que obtendrías por un método obsoleto. –
@Chris Collins, supongo que el documento está desactivado, y que no es un sinónimo estricto. El punto sigue siendo que el tipo de Objeto # es un método sin uso. – runako
¿Por qué usar responder_a? –