Jak pokazano w poniższym przykładzie ruby, nie mogę wywołać lambda
z nieprawidłową liczbą argumentów jako Proc
utworzoną z Method
, ponieważ jest ona ścisła w odniesieniu do liczby argumentów:Jak przekonwertować metodę lub lambda na procę inną niż lambda
# 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
Jak mogę dostać Proc
który nie jest lambda albo z Proc
czyli albo z Method
?
O ile mogę powiedzieć, nie można przekonwertować metody lub lambda na proc non-lambda. Co próbujesz osiągnąć? –
@WallyAltman Wywołanie semantyki bloku, przede wszystkim w odniesieniu do liczby argumentów, ale istnieje kilka innych różnic. – michelpm