web-dev-qa-db-fra.com

ruby convertit un tableau en arguments de fonction

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

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

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

90
user1134991

Vous pouvez transformer un Array en une liste d’arguments avec le * _ (ou "splat") opérateur:

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:

85
Johnsyweb

Utilisez ceci

a.slice(*b)

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

92
Sergio Tulentsev