ume

Ruby chunk_whileメソッド

結論

配列内の要素をある条件に従ってグループ化するメソッド

使い方
配列.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になり続ける場合グループ化し続ける