あまり使わないけど便利なRubyのcompact/flatten/shuffleメソッドを紹介
  • facebookページ
  • twitterページ
  • 2020.12.18

    あまり使わないけど便利なRubyのcompact/flatten/shuffleメソッドを紹介

    Rubyでは配列(Array)を操作するのに便利なメソッドをいくつか用意されています。

    配列が空かチェックする empty?、最大・最小値を求める max/min、配列を並び替える sortメソッドなど、よく使う関数はご存知の方も多いでしょう。

    今回は、普段はあまり使わないけど、知っていると便利な Array#compactArray#flattenArrray#shuffleメソッドを紹介します。

    nilを除去するArray#compactメソッド

    Rubyの Array#compactメソッドは、配列の要素から nilを取り除くメソッドです。

    では、さっそく Array#compactメソッドの使い方を見てみましょう。

    実行結果を見ても分かるとおり、コードを実行するとnil`が配列から取り除かれているのが分かります。

    Array#compact!

    エクスクラメーションマーク(!マーク)がついた、 Array#compact!メソッドは、自分自身の配列から nilを取り除く破壊的なメソッドです。

    「Array#compact!」メソッドの注意点

    エクスクラメーションマーク(!マーク)がついた、 Array#compact!メソッドの使い方には注意が必要です。

    Array#compact!メソッドは、対象の配列に nilが含まれない場合は戻り値が nilになります。

    実際にサンプルコードを見てみましょう。

    結果を見ての通り、 nilを含まない配列で Array#compact!を実行すると、戻り値が nilになっています。
    ただし、配列自体が nilになって壊れるわけではなく、実行結果の2行目のように配列には正しい値が残ります。

    Array#compact!を使用する場合は、メソッドの戻り値は使用すると、思わぬバグを産む恐れがあるため、戻り値は使用しないように注意しましょう。

    入れ子の配列を平坦にするArray#flattenメソッド

    次に Array#flattenの使い方を紹介します。

    Array#flattenメソッドは、入れ子になった配列を平坦にするためのメソッドです。
    言葉だけでは分かりにくいため、早速サンプルコードを見ていきましょう。

    上の実行結果のとおり、配列の中に入れ子にした [3, 4][7, 8, 9]などの配列が、 Array#flattenメソッドを呼ぶことで、平坦(1次元)な配列に変換されているのが分かります。

    次のような、深く入れ子になった配列でも、 Array#flattenを使用することで平坦な配列に変換することができます。

    平坦化する階層数を指定する

    Array#flattenメソッドは、引数に平坦化する階層数を指定できます。
    引数に階層数を指定すると、指定した階層より下の配列は平坦化されません。

    実際にサンプルコードを見てみましょう。

    引数に2を指定したため、2階層目までは平坦化されていますが、3階層目からは配列のままとなっていることが分かります。

    ポテパンダの一言メモ

    Array#flattenメソッドの引数を省略すると、すべての階層を再起的に平坦化します。

    Array#flatten!

    エクスクラメーションマーク(!マーク)がついた、 Array#flatten!メソッドは、自分自身の配列を平坦な配列に変更する破壊的メソッドです。

    配列をシャッフルするArray#shuffleメソッド

    3つ目に紹介するのは、配列の中身をランダムにシャッフルする Array#shuffleメソッドです。

    さっそく Array#shuffleメソッドの使い方を見てみましょう。

    配列の中身がランダムシャッフルされるため、実行するたびに結果が変わりますが、中身が不規則に並び変わっていることが分かります。

    Array#shuffle!

    エクスクラメーションマーク(!マーク)がついた、 Array#shuffle!メソッドは、自分自身の配列をシャッフルする破壊的メソッドです。

    さいごに

    Rubyで配列を操作するメソッドを3つ紹介してきました。

    今回紹介したメソッド以外にも、Rubyでは配列を操作するための便利な関数がいくつもあります。
    うまく使いこなすことで、自分で組むコード量が減り、かつ見やすいコードを書くことができるようになります。

    【関連記事】
    【Ruby入門】Arrayクラスの使い方と応用例



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE