Rubyのぼっち演算子

オブジェクトがnilの場合、メソッドを実行しようとするとエラーになってしまい、プログラミングの処理が停止してしまう。&.演算子(ぼっち演算子)を使用することで、エラーを制御することが出来る。

Rubyにおいてはレシーバーであるオブジェクトに対してあるメソッドを実行する時、そのオブジェクトがnilの場合はエラーになる。

ところがぼっち演算子はオブジェクトがnilの場合、nilを返すことでエラーを出さなくする。オブジェクトがnilでなければそのまま結果を返し、nilの場合はnilを返すメソッドがこの演算子の特徴である。これによりオブジェクトの有無に応じてif文を書いたり、三項演算子を使う必要がなくなる。

> object = nil
> object&.name
=> nil

> object.name
=> Traceback (most recent call last):
        1: from (irb):35
NoMethodError (undefined method `name' for nil:NilClass)

上はぼっち演算子を使っているので、nilを返している。処理が停止することなく、nilを返すところまで動いているのである。

ぼっち演算子を使うと以下のように簡単に分岐をかける。下の三つはいずれも同じ結果である。

name = if object
 obejct.name
else
 nil
end

name = object ? object.name : nil

name = object&.name