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

Posted

技术标签:

【中文标题】给定一组参数,如何将这些参数发送到 Ruby 中的特定函数?【英文标题】:Given an array of arguments, how do I send those arguments to a particular function in Ruby? 【发布时间】:2011-06-06 07:25:21 【问题描述】:

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

a = [1,2,3]

还有一个函数;假设它是一个实例函数:

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

如何像调用 (Ilike.new).turtles(1,2,3) 一样调用 Ilike.turtlesa

我熟悉send,但这似乎无法将数组转换为参数列表。

与我正在寻找的类似是 javascript apply,它等同于 call,但将数组转换为参数列表。

【问题讨论】:

【参考方案1】:

如您所知,当您定义方法时,您可以使用* 将参数列表转换为数组。同样,当您调用方法时,您可以使用* 将数组转换为参数列表。所以在你的例子中你可以这样做:

Ilike.new.turtles(*a)

【讨论】:

太棒了。根据您的出色回答,我在Wikibooks 中找到了对该技术的更全面说明。这实际上是完全合理的,因为并行符号是另一种方式。哦,确实是鲁比。我还注意到,您可以使用 Ilike.new.turtles(1,2,3,*a) 在前面添加自己的参数,而不会让 a.unshift 烦躁不安,尽管后置似乎需要这样的操作。 @StevenXu 在 Ruby 1.9 中,您还可以为 'postpending' 打招呼。 a=[1,2]; b=[4,5]; p(0,*a,3,*b,6) #=> "0\n1\n2\n3\n4\n5\n6" 完美回答! 这是一个有趣的技巧:some_func(*'some string of args'.split)

以上是关于给定一组参数,如何将这些参数发送到 Ruby 中的特定函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 jchararray 作为参数发送到 C 函数

如何将 dryRun 参数发送到 pandas.read_gbq 函数

如何使用烧瓶将多个参数发送到路由?

如何使用格式化程序将参数发送到操作:MVC 中 jqGrid 4.6.0 中的“showlink”

使用 argparse 将参数发送到 Python 脚本中的函数

使用ajax将参数发送到drupal视图