Ruby method_missing
da Nss il marzo 12, 2010
Magari non tutti conoscono questo “bel” metodo di ruby, esso appartiene alla classe obj e fa parte del modulo Kernel di ruby.
il metodo è definito in questo modo:
obj.method_missing(symbol [, *args]) => result
e potrete trovare una sua descrizione della doc ufficiale di ruby [1].
In breve questo metodo intercetta le chiamate che un oggetto normalmente non sa gestire.
In symbol è contenuto il symbolo (:name) corrispondente al metodo chiamato, in args invece sono contenuti gli elementi passati ad esso.
Facciamo un esempio per capire meglio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Test def not_exist(method) puts "Il metodo #{method} non esiste" end def method_missing(methid) method=methid.id2name #trasformo methid in stringa not_exist method end end if __FILE__==$0 t=Test.new t.test t.sottolapancalacapracampa end |
provando ad eseguire questo condice si otterrà ad esempio il seguente risultato:
Il metodo test non esiste Il metodo sottolapancalacapracampa non esiste
Semplice no??
[1] http://ruby-doc.org/core/classes/Kernel.html
Lascia un commento