Rubyのflattenメソッド:配列を平坦化する
Rubyの配列操作において、flattenメソッドは多次元配列を平坦化し、一次元配列に変換するために使用されます。この記事では、flattenメソッドの使い方、様々な使用例、および読者の検索意図を解説します。このメソッドを理解し活用することで、配列の操作がより効率的かつ柔軟になります。
flattenメソッドの基本
flattenメソッドは、多次元配列の要素を一つの平坦な配列に結合します。このメソッドは、元の配列は変更せず、新しい配列を返します。
基本的な使用方法
多次元配列を一次元配列に変換します。
ソースコード例: flattenメソッドの基本的な使用
1 2 3 |
nested_array = [1, [2, 3], [4, [5, 6]]] flattened_array = nested_array.flatten puts flattened_array |
この例では、多次元配列が一次元配列に変換されます。
出力結果
1
2
3
4
5
6
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
flatten!メソッドの基本
flatten!メソッドは、flattenと同じく配列を平坦化しますが、元の配列自体を変更します。このメソッドは、配列に変更があった場合にのみ自身を返し、変更がなければnilを返します。
破壊的な方法で配列を平坦化する
元の配列を直接平坦化します。
ソースコード例: flatten!メソッドの使用
1 2 3 |
array = [1, [2, 3], [4, [5, 6]]] array.flatten! puts array |
この例では、元の配列が直接平坦化されます。
出力結果
1
2
3
4
5
6
flattenとflatten!の違い
flattenとflatten!の主な違いは、元の配列を変更するかどうかです。flattenは元の配列を変更せず、新しい配列を返します。一方でflatten!は元の配列を直接変更します。
同じ条件でflattenとflatten!を使った場合
同じ条件でflattenとflatten!を使用した場合の違いを確認します。
ソースコード例: flattenとflatten!の違い
1 2 3 4 5 6 |
original_array = [1, [2, 3], [4, [5, 6]]] flattened_array = original_array.flatten original_array.flatten! puts "Flattened array: #{flattened_array}" puts "Original array after flatten!: #{original_array}" |
この例では、flattenで作成された新しい配列と、flatten!によって変更された元の配列を比較します。
出力結果
Flattened array: 1 2 3 4 5 6
Original array after flatten!: 1 2 3 4 5 6
応用例
flattenとflatten!メソッドは、単純な数値や文字列の配列だけでなく、オブジェクトを含む複雑な配列にも応用できます。
オブジェクトの配列での使用
オブジェクトを含む配列でのflatten/flatten!メソッドの使用例を見てみましょう。
ソースコード例: オブジェクトの配列でのflatten/flatten!メソッドの使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Product attr_reader :name, :categories def initialize(name, categories) @name = name @categories = categories end end products = [ Product.new("Apple", ["Fruit", "Food"]), Product.new("Shampoo", ["Beauty", "Health"]) ] categories = products.map(&:categories).flatten puts categories |
この例では、各商品のカテゴリーを一つの平坦な配列に結合します。
出力結果
Fruit
Food
Beauty
Health
まとめ
Rubyのflattenとflatten!メソッドは、多次元配列を平坦化し、一次元配列に変換するためのメソッドです。
これらのメソッドを適切に使用することで、Rubyプログラミングにおける配列操作の幅が広がります。
元の配列を変更するかどうかを理解し、状況に応じて適切なメソッドを選択することが重要です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!