改良前: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
以上。