ruby-on-rails - 将数组元素作为参数发送到方法调用

标签 ruby-on-rails ruby

我有一个接受 splat 运算符的方法:

def hello(foo, *bar)   
   #... do some stuff 
end

我有一个长度可变的数组,我想将其发送到这个 hello 方法中:

arr1 = ['baz', 'stuff']
arr2 = ['ding', 'dong', 'dang']

我想用 arr1 和 arr2 作为该方法的参数来调用该方法,但我一直被挂断,因为 *bar 被解释为数组而不是单个参数。为了让事情变得更有趣,我根本无法更改 hello 方法。

我正在寻找类似于 this SO question 的内容但在 ruby 中。

最佳答案

试着这样调用它

hello(arr1, *arr2)

这是 irb 中的运行

irb(main):002:0> def hello(foo, *bar)
irb(main):003:1>   puts foo.inspect
irb(main):004:1>   puts bar.inspect
irb(main):005:1> end
=> nil
irb(main):006:0> arr1 = ['baz', 'stuff']
=> ["baz", "stuff"]
irb(main):007:0> arr2 = ['ding', 'dong', 'dang']
=> ["ding", "dong", "dang"]
irb(main):008:0> hello(arr1, arr2)
["baz", "stuff"]
[["ding", "dong", "dang"]]
=> nil
irb(main):009:0> hello(arr1, *arr2)
["baz", "stuff"]
["ding", "dong", "dang"]
=> nil

通过将 * 添加到第二个数组,它将它们视为一个数组,而不是一个数组的数组,我想这就是你要找的

关于ruby-on-rails - 将数组元素作为参数发送到方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552552/

相关文章:

ruby - 按属性查找对象

ruby-on-rails - 如何在 ActiveRecord 语句中包含 coalesce()

ruby-on-rails - "rake routes"实际上是做什么的?

ruby-on-rails - Spork 没有加速我的测试

ruby-on-rails - 在 Rails 应用程序中重新定义 $stdout 和 $stderr 的副作用

ruby-on-rails - 亚马逊网络服务 SES smtp 超时

ruby - 在 Mac OS X 上安装 Homebrew 无法连接到 raw.githubusercontent.com 端口 443

ruby - 我总是在使用 Mechanize 的 UTF-8 错误中得到一个无效的字节序列

ruby-on-rails - Rails 3,在RAILS_ROOT上方显示来自本地文件系统的jpg图片

ruby-on-rails - NGINX 和配置文件中的环境变量