Rubyでnull(nil)判定を行う方法とは 各メソッドの違いを把握しよう
  • facebookページ
  • twitterページ
  • 2021.04.01

    Rubyでnull(nil)判定を行う方法とは 各メソッドの違いを把握しよう

    Rubyではnull(nil)を判定するために「nil?」「blank?」などの各種メソッドを利用することが可能です。

    本記事では、サンプルコードを掲載しながらnull(nil)判定を行う各種メソッドについて解説していきます。

    Rubyではnullではなくnil


    Ruby以外のプログラミング言語経験者の中には、「null」と「nil」の違いについて混乱してしまう方もいらっしゃるかと思います。

    Rubyでのプログラムにおいては「null」ではなく「nil」が利用されます。

    nullとnilの違い

    「null」と「nil」はどちらも「存在しない」ことを意味しており、語源の違いや品詞としての違いこそありますが、意味合い自体は変わりません。

    Rubyのプログラムにおいては「nil」を利用すると覚えておきましょう。

    ポテパンダの一言メモ

    「null」と「nil」のどちらを利用するかはプログラミング言語により異なります。

    NilClassについて

    Rubyでnilが属しているクラスとして「NilClass」の存在が挙げられます。

    nilはNilClass唯一のインスタンスです。

    nil判定を行う際にこのNilClassで定義されたメソッドを使用する必要があります。

    Rubyにおけるnull(nil)の判定方法


    Rubyではnullではなく「nil」を使用すると確認出来たところで、次にnil判定の方法について解説していきます。

    nil判定の方法には「nil?」「blank?」「present?」メソッドを利用することが可能です。

    nil?

    nil?では、対象オブジェクトがnilかどうかを確認することが可能で、nilの場合「true」それ以外は「false」が返却されます。

    nilの場合

    実行結果は下記です。

    nil以外の場合

    実行結果は下記です。

    オブジェクトが存在しない場合

    実行結果は下記です。

    nilかどうかのチェックをするオブジェクト自体が存在しない場合エラーとなるため注意が必要です。

    blank?

    「blank?」は「nil」に加えて「空白文字列」「空の配列」なども「true」が返却され、それ以外の実際に値が設定されている場合には「false」が返却されます。

    nilまたは空白値の場合

    実行結果が下記です。

    ポテパンダの一言メモ

    「blank?」はrailsのメソッドとなるため、「require ‘active_support’」の記述が必要です。

    実際の値が設定されている場合

    実行結果が下記です。

    「0」は空白値として該当しそうにも思えますが「blank?」メソッドでは実在する値として判定されます。

    present?

    「present?」は「blank?」とは反対で、「nil」や「空白文字列」「空の配列」の場合「false」、実際の値が設定されている場合「true」が返却されます。

    nilや空白値の場合

    実行結果は下記です。

    実際の値が設定されている場合

    実行結果は下記です。

    「blank?」と「present?」で出力結果が正反対になっていることをご確認頂けます。

    empty?について

    nil判定に使えるかと誤解してしまいがちなメソッドとして「empty?」が挙げられます。

    「empty?」では空白値を調べることは可能ですが、「nil」に関しては判定することが出来ません。

    実行した結果が下記です。

    「empty?」メソッドは「NilClass」に定義されていないため「NoMethodError」が表示されます。

    ポテパンダの一言メモ

    「empty?」メソッドの場合「半角スペース」や「全角スペース」の場合、値が設定されていると判定され「false」が返却されることを確認しておきましょう。

    Rubyでnilガード(nullガード)を試してみよう


    Rubyではnil(null)状態を防ぐために、nilガードと呼ばれる書き方が存在します。

    基本構文

    「||=」と記述することで、変数が「nil」の場合に指定値を代入することが可能です。

    サンプル

    実際にnilガードを使用したサンプルコードで動作確認をしてみます。

    実行結果が下記です。

    サンプルのように「nil」が設定されている場合、指定した値で上書きされ、「nil以外」の値が設定されている場合には上書きされることなく既存の変数値が適用されます。

    さいごに: Rubyではnullの代わりにnilを利用する


    本記事では、Rubyのプログラムで「null」の代わりに利用される「nil」に関する情報と使い方についてご紹介してきました。

    他のプログラミング経験者であれば記述法こそ違いますが「null」と同様に扱うことが可能です。

    各種判定メソッドにより「null(nil)」に対する結果が変わってきますので、きちんと処理内容を把握して使いこなせるように学習していきましょう。



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE