如何为方法动态创建参数?
Posted
技术标签:
【中文标题】如何为方法动态创建参数?【英文标题】:How to dynamically create arguments for a method? 【发布时间】:2011-01-14 23:26:17 【问题描述】:对 Ruby 来说还是有点新,我不知道该怎么做……假设我有一个方法可以接受可变数量的参数:
def mytest(*args) 将 args.to_json 结束
显然我可以用任何我喜欢的方式调用它,例如:
mytest('一', '二', '三')
没问题。但我需要做的是用一组动态创建的参数调用它。例如,我正在从数据库中提取结果集,但我不知道会返回多少条目。假设我想收集结果 id,并用它们调用 mytest() —— 我将如何构造要传递给 mytest() 的参数集?
这似乎很明显,但无论出于何种原因,它都不是。我意识到我可以改为编写 mytest() 来获取数组或哈希,但我实际上是在尝试调用我没有编写的插件中的方法。
【问题讨论】:
【参考方案1】:我不确定我是否理解您的问题。您是在问如何将数组转换为方法的参数?阅读本文
假设你有这个:
a = [1,2,3,4]
还有一个采用 4 个参数的方法,例如:
def whatever(p1,p2,p3,p4)
# do whatever you want with them here
end
你可以像这样调用方法:
whatever(*a)
数组的元素将按照您希望的方式发送。
【讨论】:
我想这就是他想要的。 是的,就是这样,谢谢!对于我们这些来自包括 C 的背景的人来说,这看起来既奇怪又明智,实际上。我想出的唯一其他解决方案是在适当地构建 String 之后使用 eval() ,但这显然不是很好,原因有很多。以上是关于如何为方法动态创建参数?的主要内容,如果未能解决你的问题,请参考以下文章