Ruby 2.3.0 引入了安全导航语法,通过引入一个仅在前一个语句的值不是nil时才调用方法的新运算符,简化了链式方法调用的 nil 处理。这是一个已经存在于例如 C#、Groovy 和 Swift 中的特性。例如在 Groovy中,语法是
foo?.bar
这基本上意味着结果值是foo.bar的值,除非foo为null,在这种情况下,返回值也为null,因此不会引发异常。C#(称为空条件运算符)和Swift(称为可选链表达式)也使用这种表示法。
所以语法在其他语言中似乎是相当标准的。现在,为什么在 Ruby 中的语法是
foo&.bar
反而?