【问题标题】: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() 来获取数组或哈希,但我实际上是在尝试调用我没有编写的插件中的方法。

【问题讨论】:

    标签: ruby arrays variables methods arguments


    【解决方案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() ,但这显然不是很好,原因有很多。
    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 2021-12-05
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2019-03-11
    相关资源
    最近更新 更多