numbers = 1..10
print numbers.map {|x| x*x}
# I want to do:
square = {|x| x*x}
print numbers.map square
Because the syntax is more concise. I there a way to do this without having to use def + end?
3 Réponses :
square = proc {|x| x**2 }
print number.map(&square)
Merci LBG, qu'est-ce que les et font là-bas?
& CODE> Transformez l'objet PROC sur un bloc à la méthode.
numbers = 1..10
square = lambda{|x| x*x }
numbers.map &square
Vous ne pouvez pas attribuer de bloc à une variable car un bloc n'est pas vraiment un objet en soi.
Ce que vous peut em> faire, est attribuer un objet proc code> objet à une variable, puis convertissez-le en un bloc utilisant l'opérateur & code> préfixe unaire: p>
À qui suit ma réponse, et les deux personnes qui ont approuvé que EDIT: Si vous n'avez aucune idée de ce que vous faites, alors ne le faites pas. Je n'ai aucun problème avec des gens qui répartissent mes erreurs, mais introduisant i> eux ne va pas. Mon code fonctionne parfaitement, le vôtre non seulement ne fonctionne pas, il n'est même pas Analysse i>.
Il y a quelques façons différentes de créer un bloc comme objet, dont certains sont obsolètes. Timtowtdi s'applique vraiment ici.