给定一组参数,如何将这些参数发送到Ruby中的特定函数?

Ste*_*ven 66 ruby arrays arguments function

原谅初学者的问题,但是说我有一个数组:

a = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

而某个功能; 让我们说它是一个实例函数:

class Ilike
  def turtles(*args)
    puts args.inspect
  end
end
Run Code Online (Sandbox Code Playgroud)

我如何调用Ilike.turtles,a就像我打电话一样(Ilike.new).turtles(1,2,3).

我很熟悉send,但这似乎并没有将数组转换为参数列表.

与我正在寻找的并行是Javascript apply,相当于call将数组转换为参数列表.

sep*_*p2k 125

如您所知,在定义方法时,可以使用将*参数列表转换为数组.类似地,当您调用方法时,您可以使用将*数组转换为参数列表.所以在你的例子中你可以做到:

Ilike.new.turtles(*a)
Run Code Online (Sandbox Code Playgroud)

  • 太棒了.根据您的优秀答案,我在[Wikibooks](http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#Variable_Length_Argument_List.2C_Asterisk_Operator)中找到了对此技术的更全面的说明.考虑到并行符号是另一种方式,这实际上是完全合理的.哦,确实是Ruby.我还注意到你可以通过使用`Ilike.new.turtles(1,2,3,*a)`来添加你自己的参数而不会有尴尬的`a.unshift`坐立不安,尽管postpending似乎需要这样一个manoeuver. (4认同)