Hashインスタンスかnilか分からない変数があって、Hashインスタンスだったらキーに紐づく値がほしい、nilだったらnilのままでいい、そんなコードが書きたくなることがある。
単純に書くと下記のようになるが、変数名を2度書くのが面倒だ。
a = {foo: 1}
b = a ? a[:foo] : nil
b = a && a[:foo]
Ruby 2.3.0以降なら「ぼっち演算子(safe navigation operator)」が使える。
b = a&.[](:foo)
NilClass#to_h で {} が返るので、下記のようにする手もある。
b = a.to_h[:foo]