chunk にはカタマリという意味があって、chunk
はブロックの結果が同じものをグループ化するメソッドです。
例えば同じサンプルの配列でも要素のクラスをキーとしてグループ化すると次のようになります。
lang
1ary = [4, 4, 5, 3, 3, 3, 'a', 'a', 7, 7, 7]
2ary.chunk{|v| v.class}.each{|r| p r}
3# [Fixnum, [4, 4, 5, 3, 3, 3]]
4# [String, ["a", "a"]]
5# [Fixnum, [7, 7, 7]]
挙げられているサンプルでは chunk{|v|v}
なので、要素自体がグループ化のキーになっています。
そのため要素が同じものでグループ化します。
lang
1ary.chunk{|v|v}.each{|r| p r}
2# [4, [4, 4]]
3# [5, [5]]
4# [3, [3, 3, 3]]
5# ["a", ["a", "a"]]
6# [7, [7, 7, 7]]
これを map(&:last)
でグループ化した結果の方だけをまとめた配列にしています。
この書き方の意味が分からない場合は以前の回答を見てください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。