ruby converte array em argumentos de função

96

Digamos que eu tenha uma matriz. Desejo passar a matriz para uma função. A função, no entanto, espera dois argumentos. Existe uma maneira de converter rapidamente a matriz em 2 argumentos? Por exemplo:

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

Resultaria em um erro em Ruby. Preciso contribuir a.slice(b[0],b[1]). Estou procurando algo mais elegante, como em a.slice(foo.bar(b)) Obrigado.

user1134991
fonte

Respostas:

101

Você pode transformar um Arrayem uma lista de argumentos com o *operador (ou "splat"):

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

Referência:

Johnsyweb
fonte
1
Sim! Isso é perfeito. :)
Arup Rakshit
95

Usa isto

a.slice(*b)

É chamado de operador splat

Sergio Tulentsev
fonte