Send
Característica avanzada de Ruby que
permite invocar un método a partir de su
nombre.
class Persona
def saludar
puts "Hola soy una persona"
end
end
p = Persona.new
p.saludar
p.send(:saludar)
p.send("saludar")
Permite escribir código que invoque a
métodos que no existen todavía.
El identificador del método puede
obtenerse de diversos sitios, entrada de
teclado, base de datos, fichero...
method_missing
Cuando una clase en Ruby no implementa
un método se llama al método
method_missing.
Por defecto lanza una excepción(NoMethodError), pero se
puede sobreescribir este comportamiento(ver ejemplo).
Recibe dos parámetros, el identificador del
método invocado y la lista de argumentos.
Ejemplo:method_missing
class Persona
def saludar
puts "Hola soy una persona"
end
def method_missing(id, *args)
puts "Yo no puedo #{id}"
end
end
method_missing
p = Persona.new
p.saludar # Hola soy una persona
p.caminar # Yo no puedo caminar
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario