【问题标题】:Given an array of arguments, how do I send those arguments to a particular function in Ruby?给定一组参数,如何将这些参数发送到 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,但将数组转换为参数列表。

【问题讨论】:

    标签: ruby arrays function arguments


    【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多