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

a = [1,2,3]

和某个函数;假设它是一个实例函数:

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

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

我熟悉send,但这似乎不能将数组转换为参数列表.

与我所寻找的类似的是Javascript apply,它相当于call,但将数组转换为参数列表.

推荐答案

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

Ilike.new.turtles(*a)

Ruby相关问答推荐

鲁比.METHOD_MISSING+SEND对于带有命名参数的混合参数失败

每次调用返回新的 REST 响应的 Ruby Rspec class_double

使用数组作为其中之一转换键和值

Ruby - 将两个哈希与一些相似的键合并

如何使用 Ruby 的 optparse 解析没有名称的参数

冒号:和粗箭头=>有什么区别

给url添加参数

在 MacOS Sierra 上使用 RMagick 2.16 的 ImageMagick 7 找不到 MagickWand.h

按键对哈希进行分组并对值求和

ruby命令在我的 Mac 上没有任何作用

Vagrant - 如何拥有特定于主机平台的配置步骤

需要必要的库和/或头文件时如何安装 ruby​​-debug

class_eval、class_exec、module_eval 和 module_exec 有什么区别?

与 String 相比,在 Ruby 中使用 StringIO 有哪些优势?

删除/取消定义类方法

如何使用 RVM 更新 Ruby 解释器?

当我将参数传递给脚本时,使用 gets() 会出现没有这样的文件或目录错误

Ruby Koans 的 test_sharing_hashes 中的附加问题的答案是什么?

判断 Ruby 中是否存在 URL

如何在 Ruby 中向异常消息中添加信息?