8
votes

Comment puis-je définir / nommer un bloc dans Ruby?

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?

1 commentaires

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.


3 Réponses :


14
votes
square = proc {|x| x**2 }
print number.map(&square)

2 commentaires

Merci LBG, qu'est-ce que les et font là-bas?


& Transformez l'objet PROC sur un bloc à la méthode.



1
votes
numbers = 1..10
square = lambda{|x| x*x }
numbers.map &square

0 commentaires

9
votes

Vous ne pouvez pas attribuer de bloc à une variable car un bloc n'est pas vraiment un objet en soi.

Ce que vous peut faire, est attribuer un objet proc objet à une variable, puis convertissez-le en un bloc utilisant l'opérateur & préfixe unaire: xxx


1 commentaires

À 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 eux ne va pas. Mon code fonctionne parfaitement, le vôtre non seulement ne fonctionne pas, il n'est même pas Analysse .