ruby-on-rails - 在 Ruby 中,我可以将数组的每个元素单独传递给接受 *args 的方法吗?

标签 ruby-on-rails ruby

给定一个方法返回一个数组,另一个方法接受任意数量的参数,有没有办法以数组的每个元素作为参数调用第二个方法?

例如:

def arr
  ["a", "b", "c"]   
end

def bar(*args)
  args.each {|a| puts a}
end

我要打电话

bar "a", "b" , "c"

当然这是一个简化的例子,实际上 arr 可以返回任何大小的数组(比如它是一个 ActiveRecord 查找,我想将所有结果传递给 bar),因此我的问题。

最佳答案

你可以这样做:

my_array = ['a', 'b', 'c']
bar(*my_array)

这会将数组展平为单独的元素,并将它们作为单独的参数传递给方法。您可以对任何类型的方法执行此操作,而不仅仅是接受 *args 的方法。

所以在你的情况下:

bar *arr

关于ruby-on-rails - 在 Ruby 中,我可以将数组的每个元素单独传递给接受 *args 的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5253563/

相关文章:

ruby-on-rails - 如何将 curl 中的 POST 请求转换为 ruby​​?

ruby-on-rails - form_for(部分)的路由范围问题

ruby-on-rails - 友好 ID slug 不包含 id

ruby-on-rails - 我可以在阵列上使用 update_all 吗?

ruby-on-rails - 在这种情况下是否有机会在不在开发环境中复制数据库的情况下测试 PostgreSQL 数据库?

ruby - Ruby 中的方法和属性有什么区别?

ruby - 通过 capistrano 将 Rails 应用程序部署到 bluehost 时出现参数错误

ruby-on-rails - 如何解决超时问题(Ruby、Rails)

ruby - 哪些 Ruby 类支持 .clone?

ruby-on-rails - 找不到路径 "/users/"的设计映射。怎么会?