ruby konwertuje tablicę na argumenty funkcji

98

Powiedz, że mam tablicę. Chcę przekazać tablicę do funkcji. Funkcja oczekuje jednak dwóch argumentów. Czy jest sposób, aby w locie przekonwertować tablicę na 2 argumenty? Na przykład:

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

Wystąpiłby błąd w Rubim. Potrzebuję wpisu a.slice(b[0],b[1])szukam czegoś bardziej eleganckiego, jak w a.slice(foo.bar(b)) dziękczynieniu.

user1134991
źródło

Odpowiedzi:

104

Możesz zamienić Arrayargument na listę argumentów za pomocą *operatora (lub „splat”):

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

Odniesienie:

Johnsyweb
źródło
95

Użyj tego

a.slice(*b)

Nazywa się to operatorem splat

Sergio Tulentsev
źródło