Kann die Bindung einer Prozedur während der Aufrufzeit geändert werden?Ändern der "Proc" -Bindung während des Aufrufs
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
Im Code oben, wie ändere ich die Bindung des Proc während des Aufrufs? Gibt es eine Möglichkeit, die Bindung ähnlich wie die eval
Funktion zu übergeben?
Hinweis Wenn das obige Beispiel real wäre, würde ich mixin
/inheritence
usw. ich den Code bin mit meinem Problem Szenario zu demonstrieren.
Können Sie damit ein Argument an "Validator" übergeben? –
'instance_eval' hat eine Schwestermethode, mit der Sie das tun können, siehe Update oben. – molf
+1 Danke für die ausführliche Antwort. –