¡Hola a todos! Me preguntaba cómo funcionan los métodos en Ruby que no se llaman con la sintaxis ClassName.method_name
. Algunos de la parte superior de mi cabeza son puts
, print
, gets
, chomp
. Estos métodos se pueden invocar sin usar el operador de punto. ¿Por qué es esto? ¿De dónde vienen? ¿Y cómo puedo ver la lista completa de tales métodos?¿Métodos de Ruby sin clase?
Respuesta
Todos los métodos en Kernel
estarán disponibles para todos los objetos de la clase Object
o cualquier clase derivada de Object
. Puede usar Kernel.instance_methods
para listarlos.
Vienen del módulo Kernel
que se incluye automáticamente para cada clase. Esos
irb(main):001:0> class Foo
irb(main):002:1> end
=> nil
irb(main):003:0> Foo.included_modules
=> [Kernel]
Even short: 'Class.new.included_modules'. :-) –
@chris: absolutamente :) – xinit
Lo sentimos, pero "automáticamente incluido" puede ser engañoso, y no es del todo correcto ... Es engañoso porque suena como si la acción de incluir 'Kernel' fuera hecha por Ruby, pero es simplemente porque las nuevas clases tienen 'Object' como ancestro, y' Object' incluye 'Kernel'. Incluya cualquier otro módulo en 'Objeto' y obtendrá el mismo efecto; no hay nada especial sobre 'Kernel'. No es del todo correcto porque las clases subclasificadas de 'BasicObject' no tendrán' Kernel' incluido. –
- 1. Clase abstracta sin métodos abstractos
- 2. Ruby - ¿Cómo redefinir los métodos de clase?
- 3. ¿Puedo usar métodos de una clase sin instanciar esta clase?
- 4. Uso de variables de instancia en métodos de clase - Ruby
- 5. puedo tener RSpec sin una clase para los métodos
- 6. clase clase: métodos instancia vs. clase
- 7. ¿Cómo prefieres definir los métodos de clase en Ruby?
- 8. ¿Métodos booleanos en Ruby?
- 9. ¿Cómo crear un DSL sin clase en Ruby?
- 10. clase de ruby de referencia sin nombre de módulo
- 11. métodos de asignación de Ruby
- 12. (En Ruby) permitiendo métodos de clase mixta acceso a constantes de clase
- 13. Ruby instancia variables y métodos
- 14. Métodos de fábrica en Ruby
- 15. funciones de Ruby vs métodos
- 16. Crear una clase de Ruby sobre la marcha sin eval
- 17. Ruby Class Métodos vs. Métodos en clases propias
- 18. Redefina los métodos de clase o clase
- 19. Ruby Métodos y parámetros opcionales
- 20. ¿Cómo llamo a los métodos de + clase en Objective C sin hacer referencia a la clase?
- 21. Variables de clase Ruby
- 22. Operadores y métodos en Ruby
- 23. ¿Métodos estáticos en módulos ruby?
- 24. clase() vs. tipo() en Ruby
- 25. Métodos definidos fuera de clase?
- 26. Obtener el nombre de la clase Ruby sin el método de clase
- 27. Preferencias sin métodos obsoletos
- 28. Iniciadores de instancias estáticas de clase (es decir, métodos de fábrica) en Ruby
- 29. Lista de métodos de metaprogramación de Ruby?
- 30. Lanzamiento de Ruby sin el prefijo "Ruby"
muchas gracias :) – Kvass
No exactamente correcto, ya que estarán disponibles para los objetos cuyas clases subclases 'Obejct'. Las instancias de clases basadas en 'BasicObject' no tendrán métodos' Kernel'. –
@ Marc-André: ¡Gracias! Corregido –