Per essere chiari - questo codice viene eseguito perfettamente - code with procquando si chiama instance_eval (e lambda) per passare contesto attuale ha ricevuto l'errore 'numero errato di argomenti'
ma se invece cambio Proc.new a lambda, io sono ottenere un errore
ArgumentError: wrong number of arguments (1 for 0)
Può essere questo è dovuto al fatto instance_eval vuole passare sé come param, e tratta lambda come un metodo e non accetta params sconosciuti?
ci sono due esempi - prima sta lavorando:
class Rule
def get_rule
Proc.new { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
seconda no:
class Rule
def get_rule
lambda { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
Grazie
Non è "p.get_rule' invece di' p.init_rule'? – artificis