結論
⇨配列内の要素をある条件に従ってグループ化するメソッド
使い方
配列.chunk_while{|a,b| ブロックの処理 }
配列内の要素を順番に取り出してブロックの処理がtrueの間はグループ化し続ける。ブロック内の処理がfalseになるとグループ化が止まる。aには配列の最初の要素が代入され、bには配列の2つ目の要素が代入される。
例 連続した数字で配列内をグループ化する
numbers = [1,3,4,5,11,12,13,20,23,24] puts numbers.chunk_while{|a,b| a + 1 == b }.to_a 出力結果 [[1], [3, 4, 5], [11, 12, 13], [20], [23, 24]]
挙動の流れとして.
a = 1.
b = 3
a + 1 == bこの式にaとbを当てはめる.
1+1 ==3.
イコールの関係になる場合.
⇨a(1)を配列として保持する。そしてbの3がaに代入される。その後配列の3番目の要素4がb代入される。そしてまた a + 1 == bの処理をしたときに左辺==右辺になるかを判定する。イコールになれば1が入っている配列に格納される.
イコールの関係にならない場合.
bの3がaに代入される。その後配列の3番目の要素4がb代入される。そしてまた a + 1 == bの処理をしたときに左辺==右辺になるかを判定する。
まとめ
chunk_whileメソッドは配列内をある条件でグループ化する
ブロック内の処理がtrueになり続ける場合グループ化し続ける