方案:一种方法以这种方式进行参数
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"])