s = Proc.new {|x|x*2}
puts s.call(5)
-> 10
def foo(&a)
a.call(5)
end
puts "test foo:"
foo(s)
Lorsque je tente d'appeler le proc ci-dessus, je reçois:ArgumentError appeler un Proc
foo: wrong number of arguments (1 for 0) (ArgumentError)
Mon attente est que je peux passer un proc à une méthode si la méthode est définie avec ce type de signature:
def foo(&a)
et je peux exécuter le proc insiide foo comme ceci:
a.call(5)
Avec def » foo (& a) "vous pouvez aussi" céder (5) "au bloc. –