2009-09-16 15 views

Répondre

3

L'opérateur & transforme le Proc en un bloc, il devient donc une méthode à un argument avec un bloc (qui est appelé avec yield). Si vous aviez laissé le & pour qu'il passe directement le Proc, vous auriez eu une erreur.

3

En faisant le &s, vous dites one_arg que vous souhaitez que votre Proc s soit passé en bloc (veuillez me corriger si je me trompe). Une écriture équivalente serait

one_arg(5) do |x| 
    x *2 
end 

Il y a eu quelques questions ici sur SO à la fin de cette affaire. August Lilleaas a un joli write up sur certaines des subtilités de toute cette folie Ruby.