2009-05-17 4 views

Répondre

15

Utilisez *rest. voici un joli petit tutorial.

22

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 
6

(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.

Questions connexes