如何在Ruby中将数组元素作为单独的方法参数传递?

时间:2017-02-28 03:44:05

标签: ruby-on-rails ruby

场景:方法以这种方式接受参数

def my_method(model_name, id, attribute_1, attribute_2)
  # ...
end

所有参数都是未知的,所以我从对象的类名中获取模型名称,我从该类中获取的属性作为数组返回。

问题:我有一个数组["x", "y", "z"]。我需要从每个数组中取出项目并将它们传递到模型之后的方法参数中,如上所示。

是否可以删除括号"从一个阵列可以这么说,但保持物品和他们的顺序?

2 个答案:

答案 0 :(得分:7)

是的,只需在数组前使用*

my_method(model_name, *["x", "y", "z"])

它将导致:

my_method(model_name, "x", "y", "z")

*splat operator

答案 1 :(得分:1)

简单的方法是:

data = ["x", "y", "z"]
id_var = data[0]
attribute_1 = data[1]
attribute_2 = data[2]
my_method(model_name, id_var, attribute_1, attribute_2)

漫长的道路:

my_method(model_name, *["x", "y", "z"])

但最好和最聪明的方式是提出Stefan和Lukasz Muzyka:

cursor2 = conn.cursor()
cursor3 = conn.cursor()
cursor4 = conn.cursor()