La metaprogrammazione in ruby è ottima perché la utilizzo costantemente per emulare la programmazione basata su prototipi e scrivere rapidamente soluzioni prototipo per verificare la loro validità. Quindi vorrei sapere se c'è qualche differenza essenziale tra le seguenti parti di codice:Metodi ruby singleton con (class_eval, define_method) vs (instance_eval, define_method)
(class << some_object; self; end).class_eval do
define_method(:method_name) do ... method body ... end
end
e
(class << some_object; self; end).instance_eval do
define_method(:method_name) do ... method body ... end
end
Entrambe le versioni del codice di definire un metodo singleton e non ho ancora venire contro tutto ciò che mi ha costretto a scegliere la combinazione (instance_eval, define_method)
sulla combinazione (class_eval, define_method)
per definire un metodo singleton e mi chiedo se ci sia qualche differenza essenziale tra i due.
Nota che il modo migliore per ottenere il risultato è semplicemente 'define_singleton_method (: method_name) do ... FINE' –