【Ruby】nilって何?判定方法と使い方を知ろう【初心者向け】
  • facebookページ
  • twitterページ
  • 2021.04.01

    【Ruby】nilって何?判定方法と使い方を知ろう【初心者向け】

    Rubyでのプログラム開発では「nil」という他のプログラミング言語よっては見かけないワードを頻繁に目にすることになります。

    本記事では、「nil」についての基本的な情報から判定方法と使い方についてご紹介していきます。

    nilとは


    「nil」は存在しない状態を表す意味合いとして利用されます。

    プログラミングにおいては「0」や「””」も何もない状態が存在すると捉えられますが、「nil」は文字通り存在しない状態を表します。

    nilとnullの違い

    「nil」と同様に存在しない状態を表す「null」が存在しますが、Rubyでは「nil」が使用されているだけで違いはありません。

    「nil」と「null」では品詞が異なることや語源が異なるなどの違いがあるようですが、意味合い自体は変わりません。

    NilClass

    「nil」は「NilClass」のオブジェクトです。

    後述しますが、nil判定に利用出来るのはNilClassが持つメソッドのみで、例えば「empty?」などでnil判定を実施しようとするとエラーとなってしまうため注意が必要です。

    nilの判定方法


    nilの判定には「nil?」「blank?」「present?」が利用可能です。

    「empty?」を利用した場合も含めて動作を確認してみましょう。

    nil?

    「nil?」はRubyでnil判定を実施する際に利用可能なメソッドです。

    判定対象がnilの場合は「true」nil以外の場合には「false」が返却されます。

    nilの場合

    実行結果は下記です。

    nil以外の場合

    実行結果は下記です。

    blank?

    「blank?」では、「nil」の場合に加えて「空の配列」や「空白文字」の場合にも「true」を返却し、それ以外の場合「false」を返却します。

    ポテパンダの一言メモ

    「blank?」は「Ruby on Rails」で利用可能なメソッドですので、「active_support」を「require」で呼び出しておく必要があります。

    nilや空白値の場合

    実行結果が下記です。

    値が設定されている場合

    実行結果が下記です。

    present?

    「present?」は同じく「Ruby on Rails」のメソッドで、「blank?」とは反対に「nil」や「空の配列」「空白文字」の場合に「false」を返却します。

    nilや空白値の場合

    実行結果が下記です。

    値が設定されている場合

    実行結果が下記です。

    empty?

    では「empty?」メソッドはというと、「空の配列」や「空白値」の場合には「true」を返却しますが、「nil」の場合にはエラーが発生してしまいます。

    実行結果が下記です。

    「nil」をチェックしようとした際、「for nil:NilClass」によるエラーが発生していることをご確認頂けます。

    このエラーはNilClassに「empty?」が定義されていないことによるエラーで「nil」に対しては利用出来ないことを意味しています。

    Rubyのnilガードを使ってみよう


    Rubyには「nilガード」と呼ばれる手法が存在し、変数が「nil」や値の入っていない場合に指定した値を代入することが出来ます。

    基本構文

    nilガードの記述方法は下記のような形です。

    「||=」の記述により、左辺に設定された変数が「nil」または「false」となる値の場合には右辺に指定した「指定値」を代入するというものです。

    変数に何らかの値が設定されている場合には「指定値」の値が代入されることはありません。

    サンプル

    例えば変数に「nil」が設定された状態で「empty?」を使用するとエラーとなっていましたが、nilガードを実行しておくことで指定値を代入することができ、エラーを回避することが可能です。

    実行結果が下記です。

    もちろん下記サンプルのように、変数に既に値が設定されている場合にはnulガードで値が上書きされることはありません。

    実行結果が下記です。

    配列からnilを取り除くcompactメソッド


    「nil」に関連する処理の中で合わせて覚えておきたいのが、配列の中に含まれたnilを削除出来る「compact」メソッドです。

    基本構文

    compactメソッドの使い方は簡単で、配列に対して「compact」メソッドを実行するだけです。

    サンプル

    実際に簡単なサンプルコードで「compact」メソッドの処理内容を確認してみましょう。

    実行結果が下記です。

    「nil」の値が削除され、存在する値のみで構成された配列が返却されていることをご確認頂けます。

    さいごに: Rubyでのシステム開発においてnilの理解は必須


    本記事では、Rubyのシステム開発における必須知識「nil」の基本的な情報から判定方法までサンプルコードを掲載しながらご紹介してきました。

    プログラミング初心者の方には特に分かりにくい「nil」や「null」の概念ですが、システム開発を行う上では必須知識の1つです。

    今回ご紹介した基本情報をしっかりと抑えた上で「nil」をうまく扱えるよう学習していきましょう。



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE