1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubyにおけるnilとは?その判定方法とnilガードの活用例

Last updated at Posted at 2025-02-05

はじめに

数ある記事の中で本記事まで足を運んでいただきありがとうございます。

この記事では、Rubyにおけるnilとは何か紹介しながらnil判定nilガードについても触れていきます。

存在の判定で使われる「nil、empty、blank、present」といったメソッドを比較してnilを判定する場合にどういう結果が返ってくるか検証しています。

Rails開発にてTypeError - no implicit conversion of nil into Stringのエラーに直面し、nilについて調べている方は是非ご覧ください!

網羅的な内容ではありませんのでご了承下さい。

nilとは?「何もない」の定義

Rubyにおいて、nilは何もないことを表す特殊な値です。
他のプログラミング言語で言うところのnullNoneに相当します。

nilの基本的な特性

nilのクラスを確認

nilはRubyの予約語で、NilClassクラスの唯一のインスタンスです。

 nil.class
 # => NilClass

NilClassが継承しているクラス

NilClassはObjectとBasicObjectを継承している。

 NilClass.ancestors
 # => [NilClass, Object, Kernel, BasicObject]

nil.to_sは空文字列""を返す

nil.to_s
# => ""

nil判定の方法

nilを判定するためによく使われるメソッドはnil?です。

nil.nil?
# => true

そのオブジェクトがnilである場合にtrueを返します。

判定メソッドの比較

nil、empty、blank、presentのメソッドの戻り値を比較

nil""にRails開発で目にするメソッドを使用してみると。

nil.nil?      # => true
nil.empty?    # => NoMethodError
nil.blank?    # => true
nil.present?  # => false
"".nil?       # => false
"".empty?     # => true
"".blank?     # => true
"".present?   # => false

名前の通りnilのみを判定するにはnil?メソッドを使用するのが良いですね。

nilによるエラーを防ぐコードを書く

nilによるエラー(NoMethodError)を防ぐための方法を紹介します。

デフォルト値を設定したnilガード

値がnilの場合にデフォルト値を返す事ができます。

value = nil
result = value || "デフォルト値"

puts result  # => デフォルト値

わかりやすく書くと下記二つは同じ意味になります。

result = value || "デフォルト値"
result = value || (value ="デフォルト値")

場合によっては、判定メソッドを使ったnil判定が不要になりコード量を削減できることもメリットの一つです。

ぼっち演算子

&. 」シンプルで使いやすいですね。
safe navigation operatorが正式名称のようです。

nil.upcase
# => NoMethodError (undefined method `upcase' for nil:NilClass)
nil&.upcase
# => nil

最後に

nilはRubyで非常に重要な概念であり、適切に扱うことでエラーを防ぎ、コードの可読性を向上させることができると思います。
本記事でnilに関する知識が少しでも深まり開発に活かしていただけると幸いです。

参考URL

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?