0
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?

More than 3 years have passed since last update.

Ruby 「nilの場合に○○を行わない」【イディオム】

Posted at

改良前:if文を使って「nilの場合は行わない」

サンプルコードは、文字列長を求めるメソッドを作成しました。
こんなメソッドを普通には作ることは無いでしょうが、サンプルなので分かりやすさ重視です。

サンプルコード

length.rb
def get_length(text)
    if text # nil.sizeだとエラーになってしまうため回避。
        text.size
    end
end

puts get_length('abcde') # > 5
puts get_length('あいうえおかきくけこ') # > 10
puts get_length(nil) # > nil

改良後:safe navigation operator(&.)を利用する

__safe navigation operator__はオブジェクト&.メソッドでメソッドを呼び出すと、「オブジェクトがnilの時nilを返す」という演算子です。
これを使って先ほどのコードを改良します。

length.rb
def get_length(text)
    text&.size
end

puts get_length('abcde') # > 5
puts get_length('あいうえおかきくけこ') # > 10
puts get_length(nil) # > nil

以上。

0
0
0

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
0
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?