[Ruby] nilの可能性があるオブジェクトでメソッド呼び出しを安全に行う

例えば文字列に対してlengthメソッドを呼び出すと、その文字数を取得できる

irb(main):001:0> a = 'sasaki'
=> "sasaki"
irb(main):002:0> a.length
=> 6

一方、aがnilだった場合はlengthメソッドが存在しないので例外が発生する

irb(main):001:0> a = nil
=> nil
irb(main):002:0> a.length
NoMethodError: undefined method `length' for nil:NilClass
	from (irb):2
	from /root/.rbenv/versions/2.3.1/bin/irb:11:in `<main>'

しかし、変数名の末尾に&をつけることで、対象がnilだった場合メソッド呼び出しを行わずにnilを戻すようにできる

irb(main):001:0> a = nil
=> nil
irb(main):002:0> a&.length
=> nil

nilチェックが不要になるのでコードをスマートに書けるようになる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です