Safe navigation operator (&.) for nil
问题 As Ruby 2.3 introduces the Safe navigation operator( &. ), a.k.a lonely operator, the behavior on nil object seems odd. nil.nil? # => true nil&.nil? # => nil Is that designed to behave like this way? Or some edge case that slipped away when adding the lonely operator? 回答1: foo&.bar is shorthand for foo && foo.bar , so what would you expect the result of the expression nil && nil.nil? to be? 回答2: This is because nil&.nil? is shorthand for nil && nil.nil? . This would evaluate to nil && true ,