Ruby преобразует массив в аргументы функции

Скажем, у меня есть массив. Я хочу передать массив функции. Функция, однако, ожидает два аргумента. Есть ли способ "на лету" преобразовать массив в 2 аргумента? Например:

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

Уступит ошибку в Ruby. Мне нужно ввести a.slice(b[0],b[1]) Я ищу что-то более элегантное, как в a.slice(foo.bar(b)) Спасибо.

Ответ 1

Вы можете превратить Array в список аргументов с помощью оператора * (или "splat" ):

irb(main):001:0> a = [0, 1, 2, 3, 4]
=> [0, 1, 2, 3, 4]
irb(main):002:0> b = [2, 3]
=> [2, 3]
irb(main):003:0> a.slice(*b)
=> [2, 3, 4]

Справка:

Ответ 2

Используйте этот

a.slice(*b)

Он называется оператором splat