Ruby 2.3.0 では、前のステートメントの値がnilでない場合にのみメソッドを呼び出す新しい演算子を導入することで、チェーンされたメソッド呼び出しの nil 処理を容易にする安全なナビゲーション構文が導入されています。これは、C#、Groovy、Swift などに既に存在する機能です。たとえばGroovyでは、構文は次のとおりです。
foo?.bar
これは基本的に、fooがnullでない限り、結果の値がfoo.barの値であることを意味します。その場合、戻り値もnullであるため、例外はスローされません。また、C# (ヌル条件演算子と呼ばれる) とSwift (オプショナル チェーン式と呼ばれる) もこの表記法を使用します。
したがって、構文は他の言語では非常に標準的なようです。さて、なぜRubyの構文は
foo&.bar
代わりは?