Учитывая массив аргументов, как мне отправить эти аргументы определенной функции в Ruby? - PullRequest
65 голосов
/ 10 января 2011

Прости вопрос новичка, но скажи, что у меня есть массив:

a = [1,2,3]

И функция где-то;скажем, это функция экземпляра:

class Ilike
  def turtles(*args)
    puts args.inspect
  end
end

Как мне вызвать Ilike.turtles с a, как если бы я звонил (Ilike.new).turtles(1,2,3).

Я знаком с send, но это, похоже, не переводит массив в список аргументов.

Параллель того, что я ищу, - это Javascript apply, который эквивалентен call, но преобразует массив всписок аргументов.

1 Ответ

121 голосов
/ 10 января 2011

Как вы знаете, когда вы определяете метод, вы можете использовать *, чтобы превратить список аргументов в массив.Аналогично, когда вы вызываете метод, вы можете использовать *, чтобы превратить массив в список аргументов.Так что в вашем примере вы можете просто сделать:

Ilike.new.turtles(*a)
...