Tag: safe navigation operator

什么是Ruby2.3之前的安全导航操作符(`&.`)?

我可以找到的关于Ruby的新安全导航操作符( &. )的每个问题的答案错误地声明obj&.foo等同于obj && obj.foo 。 很容易certificate这种等价是不正确的: obj = false obj && obj.foo # => false obj&.foo # => NoMethodError: undefined method `foo’ for false:FalseClass 此外,存在多重评估的问题。 用具有副作用的表达式替换obj表明副作用仅在&&表达式中加倍: def inc() @x += 1 end @x = 0 inc && inc.itself # => 2 @x = 0 inc&.itself # => 1 什么是最简洁的2.3之前的obj&.foo避免了这些问题?