ruby convertir un tableau en arguments de fonction

96

Disons que j'ai un tableau. Je souhaite passer le tableau à une fonction. La fonction, cependant, attend deux arguments. Existe-t-il un moyen de convertir à la volée le tableau en 2 arguments? Par exemple:

a = [0,1,2,3,4]
b = [2,3]
a.slice(b)

Céderait une erreur dans Ruby. Je dois entrer a.slice(b[0],b[1])je cherche quelque chose de plus élégant, comme dans a.slice(foo.bar(b)) Merci.

user1134991
la source

Réponses:

101

Vous pouvez transformer un Arrayen une liste d'arguments avec l' *opérateur (ou "splat"):

a = [0, 1, 2, 3, 4] # => [0, 1, 2, 3, 4]
b = [2, 3] # => [2, 3]
a.slice(*b) # => [2, 3, 4]

Référence:

Johnsyweb
la source
1
Oui, c'est parfait. :)
Arup Rakshit
95

Utilisez ceci

a.slice(*b)

C'est ce qu'on appelle l'opérateur splat

Sergio Tulentsev
la source