Ответ 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 = [0,1,2,3,4]
b = [2,3]
a.slice(b)
Уступит ошибку в Ruby. Мне нужно ввести a.slice(b[0],b[1])
Я ищу что-то более элегантное, как в a.slice(foo.bar(b))
Спасибо.
Вы можете превратить 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]
Используйте этот
a.slice(*b)
Он называется оператором splat