2015年12月11日金曜日

151211

Ruby


mapしてflattenすることと flat_map との違い

違いがわかる例を考えてみた。

# 違いがないように見えるが…
ary0 = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
p ary0.map{|i| i}.flatten
p ary0.flat_map{|i| i}
p ''

# 違いがある
ary1 = [[[[[1, 2], [3, 4]], [[5, 6]]], [[[7, 8]]]], [[[9, 10]]]]
p ary1.map{|i| i}.flatten
p ary1.flat_map{|i| i}
p ary1.flat_map{|i| i.flat_map{|j| j}}
p ary1.flat_map{|i| i.flat_map{|j| j.flat_map{|k| k}}}
p ary1.flat_map{|i| i.flat_map{|j| j.flat_map{|k| k.flat_map{|m| m}}}}
p ''

出力結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
""
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[[[[1, 2], [3, 4]], [[5, 6]]], [[[7, 8]]], [[9, 10]]]
[[[1, 2], [3, 4]], [[5, 6]], [[7, 8]], [9, 10]]
[[1, 2], [3, 4], [5, 6], [7, 8], 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
""

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。