Ruby可枚举方法示例

Ruby可枚举方法示例,ruby,arrays,enumerable,Ruby,Arrays,Enumerable,TL;DR:我是Ruby新手,需要关于可枚举方法以及如何使用它们的帮助 我正在构建一个测试信息数组,其结构如下: [[ "Run #", "Server", "Test", "OS", "Browser", "Result" ], [ "1", "bibble", "perf_test", "Windows 8", "firefox 33", "failed"]] 我正试图编写一个按结果和其他方面排序的基本统计输出,特别是这样,就可以立即清楚地知道,比如说,所有的firefox测试都失败了,

TL;DR:我是Ruby新手,需要关于可枚举方法以及如何使用它们的帮助

我正在构建一个测试信息数组,其结构如下:

[[ "Run #", "Server", "Test", "OS", "Browser", "Result" ],
 [ "1", "bibble", "perf_test", "Windows 8", "firefox 33", "failed"]]
我正试图编写一个按结果和其他方面排序的基本统计输出,特别是这样,就可以立即清楚地知道,比如说,所有的firefox测试都失败了,还是服务器bibble上的所有测试都失败了。从我所能掌握的情况来看,枚举操作可以让我做到这一点,但我找不到清晰的例子,比如LI5,如何使用这些方法的清晰例子


因此,我的问题是-在至少3x3数组上使用可枚举方法的最简单示例是什么?

我建议您使用不同于数组的数据结构。您可以使用结构、自定义类,甚至只是一个哈希数组。这为您提供了巨大的可读性和可查询性优势,同时也略微提高了性能

下面是哈希数组的一个示例:

  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.drop1.map{| x | a.first.zipx.to_h}

一旦有了它,就可以使用枚举方法select进行查询。要查找所有失败的firefox测试,请执行以下操作:

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

你能举一个你想要达到的输出类型的例子吗?我想得到测试每个方面失败和成功的大致计数,比如50%的Firefox测试失败,等等。不过,我相信Mark Thomas的答案是我需要的。谢谢我正在编写的代码每次运行时都会生成一个新的AoA,因此我可以将其修改为AoH,尽管我很欣赏map的建议。这个例子是我见过的最清楚的一个,我将从中学习。非常感谢。