3
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

個人メモです。

&.の役割について。通常のオブジェクト(レシーバ)に対しメソッドを実行する処理の、ドットの前に&をつける。

##構文と役割

レシーバ&.メソッド

レシーバがnilの場合に、エラーではなくnilを返す

##実例

通常の処理(エラー)
x = nil
x.length

=> NoMethodError (undefined method `length' for nil:NilClass)
&.メソッド
x = nil
x&.length

=> nil

エラーにならず、nilを返すことができる。

##デフォルトの値をもつ処理
文字列に変換するto_sメソッドや、数値に変換するto_iメソッドはレシーバがない場合エラーではなくデフォルトの値になる。

ただし、&.を使うとレシーバがnilのときはnilを返す。

通常
x = nil
x.to_s
=> ""

x.to_i
=> 0 
&.
x = nil
x&.to_s
=> nil

x&.to_i
=> nil 

##実用
実用ベースでは、レシーバがnilになる可能性がある場合は、エラー表示ではなくnilを返し、その場合は||でデフォルトで設定した値を返す。

実例1
x =nil
x&.lenght || 0

=> 0
実例1
x =nil
x&.lenght ||  "nilです"

=> "nilです"

シンプルに例外処理っぽく書ける。

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