ruby - 是否可以同时迭代三个数组?

标签 ruby ruby-on-rails-3

我们可以使用 Array 的 zip 方法同时迭代两个数组,例如:

@budget.zip(@actual).each do |budget, actual|
  ...
end

是否可以迭代三个数组?我们可以使用 transpose 方法来做同样的事情吗?

最佳答案

>> [1,2,3].zip(["a","b","c"], [:a,:b,:c]) { |x, y, z| p [x, y, z] }
[1, "a", :a]
[2, "b", :b]
[3, "c", :c]

transpose 也可以,但与 zip 不同的是,它会立即创建一个新数组:

>> [[1,2,3], ["a","b","c"], [:a,:b,:c]].transpose.each { |x, y, z| p [x, y, z] }
[1, "a", :a]
[2, "b", :b]
[3, "c", :c]

注意事项:

  • 您不需要 eachzip ,它需要一个 block 。

  • 函数表达式也是可能的。例如,使用 map:sums = xs.zip(ys, zs).map { |x, y, z| x + y + z }

  • 对于任意数量的数组,您可以执行 xss[0].zip(*xss[1..-1]) 或简单地 xss.transpose.

关于ruby - 是否可以同时迭代三个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069788/

相关文章:

ruby-on-rails - 有没有办法在 Active Record 中到达那里

ruby-on-rails-3 - 如何使用 Datamapper 迁移调整 postgreSQL 数据库中的列长度?

ruby-on-rails - Ruby on Rails 嵌套模型未使用 form_for 更新,但更新时没有错误

Ruby:KML 库?

ruby-on-rails - Webrick 不会停止或重新启动

ruby-on-rails - Ruby on Rails 3 文档 : "Can I"\ "Is it advisable" use (at least) a nested resource?

ruby-on-rails-3 - Rails 迁移 : add same column to multiple tables

jquery - 在 Rails 错误中通过 Ajax 提交表单

ios - 在 Ruby 中将浮点 RGB 颜色分量转换为整数

ruby - 这个 Ruby 方法调用可以在末尾没有 **{} 的情况下进行吗?