【问题标题】:How to iterate multiple enumerables in ruby?如何在ruby中迭代多个可枚举?
【发布时间】:2011-02-06 14:21:57
【问题描述】:

我知道可以压缩两个数组,并且可以使用#each 迭代结果。但是你如何用未知数量的枚举来做到这一点? 比方说

anand = %w(1-0 0.5-0.5 0.5-0.5 1.0)
carlsen = %w(0-1 0.5-0.5 0.5-0.5 1.0)
kramnik = %w(0.5-0.5 0.5-0.5 0.5-0.5 1.0)
players= [anand, carlsen, kramnik]
#something smart

players.each{|round|puts round} #first line should be  "1-0 0-1 0.5-0.5" 

【问题讨论】:

  • 为什么不能使用 while 循环和普通的旧索引变量?
  • @HamishGrubijan:因为使用 while 循环比使用普通的旧高阶函数更容易出错且更冗长。

标签: ruby enumerable


【解决方案1】:
players.transpose.map {|a| a.join(" ")}

【讨论】:

    【解决方案2】:
    anand.zip(carlsen, kramnik) do |round| puts round.join(" ") end
    

    这将打印:

    1-0 0-1 0.5-0.5
    0.5-0.5 0.5-0.5 0.5-0.5
    0.5-0.5 0.5-0.5 0.5-0.5
    1.0 1.0 1.0
    

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多