Czy można zmienić powiązanie procedury podczas czasu wywołania?Zmiana wiązania `Proc` podczas wywołania
class AllValidator
def age_validator
Proc.new {|value| self.age > value }
end
end
class Bar
attr_accessor :age
def doSomething
validator = AllValidator.new.age_validator
validator.call(25) # How to pass self as the binding?
end
end
W powyższym kodzie, jak zmienić powiązanie proc podczas wywoływania? Czy istnieje sposób przekazania wiązania podobnie jak funkcja eval
?
Uwaga Jeżeli powyższy przykład były prawdziwe, użyłbym mixin
/inheritence
itd. Używam kod do wykazania mój scenariusz problemu.
Czy to pozwala przekazać argument do "walidatora"? –
'instance_eval' ma siostrzaną metodę, która pozwala to zrobić, patrz aktualizacja powyżej. – molf
+1 Dziękujemy za szczegółową odpowiedź. –