Ruby 2.3.0引入了安全的导航语法,通过引入一个新的运算符来简化对链接方法调用的nil处理,该运算符仅在前一条语句的值不为nil时才调用该方法。这是一个功能,例如在C#,Groovy和Swift中已经存在。例如in Groovy,语法是
foo?.bar
这基本上意味着结果值是foo.bar的结果,除非foo为null,在这种情况下,返回值也为null,因此不会引发异常。 C#(称为空条件运算符)和Swift(称为可选链接表达式)也使用此表示法。
因此,该语法在其他语言中似乎是非常标准的。现在,为什么在Ruby中语法是
foo&.bar
反而?
最佳答案
该答案基于Ruby的问题跟踪中的the discussion of the feature request。根据Ruby's author Yukihiro Matsumoto的说法,不可能在Ruby中引入运算符?.
,因为foo?
是有效的方法名称,因此无法解析。运算符的第一个候选者是反向序列.?
。该语法为already implemented(中田信义),但后来被丢弃,因为它被认为与其他语言引入的原始语法过于接近(如前所述,这是不可行的)。最终的语法&.
被Matsumoto接受为suggested。
这是松本给出的这种语法的理由
然后,此语法作为Ruby 2.3.0-preview1的一部分发布。
关于ruby - 为什么Ruby为安全的导航操作符使用其自己的语法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33735228/