web-dev-qa-db-ja.com

引数の配列が与えられた場合、Rubyの特定の関数にそれらの引数を送信するにはどうすればよいですか?

初心者の質問は許しますが、配列があると言います:

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と同等ですが、配列を引数リストに変換します。

66
Steven

ご存知のように、メソッドを定義するとき、*引数のリストを配列に変換します。同様に、メソッドを呼び出すときは、*配列を引数のリストに変換します。そのため、あなたの例では次のことができます:

Ilike.new.turtles(*a)
125
sepp2k