如何将多个参数作为数组传递给ruby method?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我有一个method:

def table_for(collection, *args)
 options = args.extract_options!
 ...
end

我希望能够像这样调用:

args = [:name, :description, :start_date, :end_date]
table_for(@things, args)

这样我就可以动态地传递基于表单提交的参数。

提问于
用户回答回答于

​Ruby很好地处理多个参数。

这是一个很好的例子。

def table_for(collection, *args)
  p collection: collection, args: args
end

table_for("one")
#=> {:collection=>"one", :args=>[]}

table_for("one", "two")
#=> {:collection=>"one", :args=>["two"]}

table_for "one", "two", "three"
#=> {:collection=>"one", :args=>["two", "three"]}

table_for("one", "two", "three")
#=> {:collection=>"one", :args=>["two", "three"]}

table_for("one", ["two", "three"])
#=> {:collection=>"one", :args=>[["two", "three"]]}
用户回答回答于

就这样:

table_for(@things, *args)

splat(*)操作符将完成此工作,而不必修改method。

扫码关注云+社区