在 ruby 中生成参数的调用方法适用于 1.8.7 但不适用于 1.9.3
Call method to generate arguments in ruby works in 1.8.7 but not 1.9.3
这是我在 ruby 1.8.7 中工作的东西,但在 1.9.3 中不再工作,我不确定是什么更改导致它失败。
以前,我有过这样的事情
myFunction(submitArgs())
其中 submitArgs 是一个可以使用某些选项调用的辅助方法
def submitArgs(args={})
#Some logic/manipulations
["Text", args]
end
然后将使用第一个参数 "Text" 调用 myFunction,第二个参数是散列。现在在 1.9.3 中,它被称为 "Text {}" 全部作为一个大字符串。
有谁知道 ruby 版本之间发生了什么变化导致了这种情况,以及是否有替代方法可以在 1.9.3 中返回参数数组?
需要更改(在 github 表示法中):
- myFunction(submitArgs())
+ myFunction(*submitArgs)
[我假设] myFunction
声明采用两个参数的原因:
def myFunction a1, a2
因此数组在传递给它之前必须被展开。我想知道它在 1.8
.
中是如何工作的
这是我在 ruby 1.8.7 中工作的东西,但在 1.9.3 中不再工作,我不确定是什么更改导致它失败。
以前,我有过这样的事情
myFunction(submitArgs())
其中 submitArgs 是一个可以使用某些选项调用的辅助方法
def submitArgs(args={})
#Some logic/manipulations
["Text", args]
end
然后将使用第一个参数 "Text" 调用 myFunction,第二个参数是散列。现在在 1.9.3 中,它被称为 "Text {}" 全部作为一个大字符串。
有谁知道 ruby 版本之间发生了什么变化导致了这种情况,以及是否有替代方法可以在 1.9.3 中返回参数数组?
需要更改(在 github 表示法中):
- myFunction(submitArgs())
+ myFunction(*submitArgs)
[我假设] myFunction
声明采用两个参数的原因:
def myFunction a1, a2
因此数组在传递给它之前必须被展开。我想知道它在 1.8
.