ruby convierte matriz en argumentos de función

96

Digamos que tengo una matriz. Deseo pasar la matriz a una función. La función, sin embargo, espera dos argumentos. ¿Hay alguna manera de convertir sobre la marcha la matriz en 2 argumentos? Por ejemplo:

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

Daría un error en Ruby. Necesito ingresar a.slice(b[0],b[1])que estoy buscando algo más elegante, como en a.slice(foo.bar(b)) Gracias.

usuario1134991
fuente

Respuestas:

101

Puede convertir un Arrayen una lista de argumentos con el *operador (o "splat"):

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

Referencia:

Johnsyweb
fuente
1
¡Sí! Eso es perfecto. :)
Arup Rakshit
95

Utilizar este

a.slice(*b)

Se llama operador de splat

Sergio Tulentsev
fuente