こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 Rubyで多次元配列を平坦化した配列を返すflattenメソッドについて
- flattenメソッドとは
- flattenメソッドを使ったサンプルプログラム
と、この記事で丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Rubyのバージョン | 2.6.6 |
Rubyのインストールは、下の記事をご参考ください。
flattenメソッドとは
flattenメソッドとは、レシーバーの多次元配列を平坦化した配列を返すメソッドです。
レシーバーについては、以下の記事をご参考ください。
レシーバーが一次元配列だった場合は平坦化が行われず、レシーバーの配列がそのまま返されます。
flattenメソッドは使い方が
- パターン1:引数なしの場合
- パターン2:引数ありの場合
の合計2パターンあります。
それぞれ解説します。
パターン1:引数なしの場合
引数なしの場合、多次元配列をすべて平坦化、つまり一次元配列にした配列を返します。
使い方サンプルは以下です。
1 2 |
sample = ["a", ["b", ["c"]]] result = sample.flatten |
resultには
1 |
["a", "b", "c"] |
という配列が返されます。
パターン2:引数ありの場合
引数ありの場合、多次元配列を引数で指定した数だけ平坦化した配列を返します。
使い方サンプルは以下です。
1 2 |
sample = ["a", ["b", ["c"]]] result = sample.flatten(1) |
resultには
1 |
["a", "b", ["c"]] |
という配列が返されます。
注意点として、引数に
1 2 |
sample = ["a", ["b", ["c"]]] result = sample.flatten("a") |
と数値以外を設定して実行すると
1 2 3 |
Traceback (most recent call last): 1: from flatten_sample.rb:2:in `<main>' flatten_sample.rb:2:in `flatten': no implicit conversion of String into Integer (TypeError) |
とシステムエラーとなります。
では、次の章で実際に使ってみます。
flattenメソッドを解説するプログラムの概要
flattenメソッドを解説するプログラムでは、
- パターン1:引数なしの場合
- パターン2:引数ありの場合
それぞれで、flattenメソッドを使い、結果を表示させます。
Rubyサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
puts "■flattenメソッドサンプル" puts "・パターン1:引数なしの場合" num_array1 = [1, [2, 3, [4, 5], 6], 7] flatten_num_array1 = num_array1.flatten puts "平坦化前:#{num_array1}" puts "平坦化後:#{flatten_num_array1}" puts puts "・パターン2:引数ありの場合" str_array2 = ["aa", ["bb", ["cc"], ["dd", ["ee", "ff"]]]] flatten_str_array2 = str_array2.flatten(2) puts "平坦化前:#{str_array2}" puts "平坦化後:#{flatten_str_array2}" |
実行結果
Rubyプログラムを実行するやり方は、以下の記事をご参考ください。
1 2 3 4 5 6 7 8 |
■flattenメソッドサンプル ・パターン1:引数なしの場合 平坦化前:[1, [2, 3, [4, 5], 6], 7] 平坦化後:[1, 2, 3, 4, 5, 6, 7] ・パターン2:引数ありの場合 平坦化前:["aa", ["bb", ["cc"], ["dd", ["ee", "ff"]]]] 平坦化後:["aa", "bb", "cc", "dd", ["ee", "ff"]] |
多次元配列を平坦化できていることが確認できました。
まとめ:flattenメソッドを使ってみよう!
以上がflattenメソッドについての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント