この記事では、異なるversionでRubyのeach_sliceメソッドを実行したところ挙動が違いましたので、それを紹介したいと思います。
実行環境は、Ruby:2.3.1とRuby:2.5.1です。
まず簡単にeach_sliceメソッドについて解説します。
each_sliceメソッドとは、配列を任意の要素数に分割するメソッドです。
例えば、
[1,2,3,4,5,6,7,8,9,10]を
[1,2,3][4,5,6][7,8,9][10]のように
ある配列を3つずつ分割したいとき
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
array.each_slice(3) { |a| p a }
#=>
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
これを前提としてRuby:2.3.1で、以下のコードを実行します。
post = [1,2,3,4,5,6,7,8,9,10]
post.each_slice(3) do |p, p2, p3|
p "===="
puts p
p p2
p p3
end
実行結果は以下のようになります。
"===="
1
2
3
"===="
4
5
6
"===="
7
8
9
"===="
10
Ruby:2.3.1では、配列で返ってこないので、このような実行結果となります。私は、versionの挙動の違いを知らず、少し戸惑ってしまったので共有させていただきました。以上です。