Enumerable module 里面有很多实用的方法,可能有些方法,我们不是很熟悉。 如果知道的话,可能对于改善我们的代码会有所帮助。我这边提取了几个比较实用的 方法供大家参考。(注意本文是 Ruby 2.2.0 版本测试的结果)
chunk {|elt|…}
chunk 方法会将根据 block 里面表达式的返回值分组处理,注意只会分组连续的元素。 例如:
1 2 |
|
注意 block 返回值里面是 nil 或 :_separator 的话,表示这个元素将会被删除掉, 对于过滤元素非常实用。 如果读文件的内容的时候,想忽略空行的时候可以使用这个方法过滤。
1 2 3 4 5 6 7 8 |
|
还有一个比较特别的 :_alone 表达式表示自己独立分组不和别的元素在一起。 例子:
1 2 3 4 5 |
|
在 rails 开发中也会经常遇到使用 chunk 的情况,例如:想把用户按照月份分组显示出来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
partition { |obj| block }
将一个集合根据 block 的返回值,分割成2个。
1
|
|
max_by, min_by, minmax_by
从名字上就可以猜出来是用来取最大最小值的。
1 2 3 4 5 |
|
zip
将 enum 每个元素和参数的每个对应元素合并。 例子:
1 2 3 4 5 6 |
|