【问题标题】:Call method to generate arguments in ruby works in 1.8.7 but not 1.9.3在 ruby​​ 中生成参数的调用方法适用于 1.8.7 但不适用于 1.9.3
【发布时间】:2015-06-23 13:38:01
【问题描述】:

这是我在 ruby​​ 1.8.7 中工作的东西,但在 1.9.3 中不再工作,我不确定是什么更改导致失败。

以前,我有这样的东西

myFunction(submitArgs())

submitArgs 是一个辅助方法,可以通过一些选项调用

def submitArgs(args={})
  #Some logic/manipulations
  ["Text", args]
end

然后 myFunction 将使用第一个参数“Text”调用,第二个参数是哈希值。现在在 1.9.3 中,它以“Text {}”作为一个大字符串调用。

有谁知道导致此问题的 ruby​​ 版本之间进行了哪些更改,以及是否有替代 1.9.3 中返回参数数组的替代方法?

【问题讨论】:

标签: ruby-on-rails ruby ruby-1.9.3


【解决方案1】:

需要更改(以 github 表示法):

- myFunction(submitArgs())
+ myFunction(*submitArgs)

[我假设]myFunction 声明采用两个参数的原因:

def myFunction a1, a2

因此在传递给它之前必须先对数组进行 splatted。我想知道 1.8 是如何工作的。

【讨论】:

  • 似乎也不喜欢那样。同样的问题。此外,myFunction 的第二个参数是可选的。
  • 其实就是rails表单提交助手>>here
  • Splatting 确实有效。我第一次尝试时编辑了错误的文件。谢谢!
猜你喜欢
  • 2014-03-03
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多