Wie im Ruby-Beispiel unten gezeigt, kann ich keine lambda
mit falscher Anzahl von Argumenten wie Proc
aus einer Method
erstellt, da es streng ist, was die Anzahl der Argumente:So konvertieren Sie Methode oder Lambda in Nicht-Lambda-Prozess
# method with no args
def a; end
instance_eval(&method(:a))
# ArgumentError: wrong number of arguments (1 for 0)
method(:a).to_proc.call(1, 2, 3)
# ArgumentError: wrong number of arguments (3 for 0)
method(:a).to_proc.lambda?
# => true
Wie erhalte ich eine Proc
, die entweder von einem Proc
kein Lambda ist das ist, oder von einem Method
?
Soweit ich sagen kann, können Sie eine Methode oder Lambda nicht in einen Nicht-Lambda-Prozess konvertieren. Was versuchst du zu erreichen? –
@WallyAltman Die aufrufende Semantik eines Blocks, vor allem bezüglich der Anzahl der Argumente, aber es gibt noch einige andere Unterschiede. – michelpm