如何为方法动态创建参数?

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() ,但这显然不是很好,原因有很多。

以上是关于如何为方法动态创建参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 UIButton 创建动态叠加层?

如何为 Handsontable 创建动态列?

如何为元素数组动态创建查询?

如何为动态创建的控件实现自动布局?

如何为动态字段Angular 4创建表单生成器?

如何为 iOS 应用动态设计或创建带有动态 ui 控件的视图