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



方案:一种方法以这种方式进行参数

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

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

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

可以说,甚至可以从阵列中"丢下括号",但要保持这些物品及其顺序?

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

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

它将导致:

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

*是SPLAT操作员。

简单的方法是:

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

很长的路:

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)

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

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

最新更新