Ruby可枚举的方法示例

时间:2015-03-24 23:58:58

标签: ruby arrays enumerable

TL; DR:我是Ruby的新手,需要有关Enumerable方法的帮助以及如何使用它们。

我正在构建一系列测试信息数组,如下所示:

[[ "Run #", "Server", "Test", "OS", "Browser", "Result" ],
 [ "1", "bibble", "perf_test", "Windows 8", "firefox 33", "failed"]]

我正在尝试编写一个基本的统计信息输出(按结果和其他方面排序,特别是这样,人们很明显,例如,所有的firefox测试都失败了,或者服务器bibble上的所有测试都失败了。 )从我可以掌握的,可枚举操作将允许我这样做,但我找不到明确的例子(如,LI5清楚)如何使用这些方法的例子。

所以我的问题是 - 在至少3x3数组数组上使用Enumerable方法的最简单的例子是什么?

1 个答案:

答案 0 :(得分:3)

我建议您使用与数组数组不同的数据结构。您可以使用结构,自定义类,甚至只使用哈希数组。这为您提供了巨大的可读性和可查询性以及轻微的性能提升。

这是哈希数组的一个例子:

  runs =
    [{"Run #"  =>"1",
      "Server" =>"bibble",
      "Test"   =>"perf_test",
      "OS"     =>"Windows 8",
      "Browser"=>"firefox 33",
      "Result" =>"failed"
     },
     {"Run #"  =>2,
      "Server" =>"bibble",
      "Test"   =>"perf_test",
      "OS"     =>"Linux",
      "Browser"=>"firefox 26",
      "Result" =>"failed"
     }]

顺便说一句,我是从数组数组中创建的,如下所示:a.drop(1).map {|x| a.first.zip(x).to_h}

获得后,您可以使用Enumerable方法select进行查询。找到所有失败的firefox测试:

runs.select{|r| r["Result"]=="failed"}.select{|r| r["Browser"]=~/firefox/}