Comment créer une fonction Ruby qui n'a pas de nombre explicite de paramètres?Fonction Ruby avec un nombre illimité de paramètres
Plus de précisions nécessaires?
Comment créer une fonction Ruby qui n'a pas de nombre explicite de paramètres?Fonction Ruby avec un nombre illimité de paramètres
Plus de précisions nécessaires?
Utilisez *rest
. voici un joli petit tutorial.
Utilisez l'opérateur floc *
def foo(a,b,c,*others)
# this function has at least three arguments,
# but might have more
puts a
puts b
puts c
puts others.join(',')
end
foo(1,2,3,4,5,6,7,8,9)
# prints:
# 1
# 2
# 3
# 4,5,6,7,8,9
Voici un autre article sur le sujet:
www.misuse.org/science/2008/01/30/passing-multiple-arguments-in-ruby-is-your-friend
donne quelques beaux exemples enrouler et dérouler vos paramètres en utilisant "*"
(Si je pouvais ajouter un commentaire à la réponse acceptée, je le ferais, mais je n'ai pas assez de points.)
Avertissement: Faites attention à ce sujet pour les méthodes de traitement des données générales. C'est un grand morceau de syntaxe sucre, mais sont limites au nombre d'arguments que vous pouvez passer à une méthode avant d'obtenir un SystemStackError. J'ai atteint cette limite en utilisant redis.mapped_mget *keys
. En outre, la limite changera en fonction de l'endroit où vous utilisez l'opérateur splat. Par exemple, en cours d'exécution pry localement, je peux éclater des tableaux de plus de 130 000 éléments à une méthode. Courir dans un acteur celluloïd, cependant, cette limite peut être inférieure à 16 000 éléments.