Bug #12412
Updated by dsferreira (Daniel Ferreira) over 8 years ago
I wonder if we couldn't extend the safe navigation operator to work with any object rather than just nil.
I tend to still use this kind of code in some scenarios, specially when I work with objects with dynamic interfaces or arguments with different possible object types:
~~~ ruby
class Foo
def bar(baz)
if baz.respond_to?(:qux)
return baz.qux
end
'whatever'
end
end
~~~
What if we extend the safe navigation operator to work with any kind of object?
If it doesn't respond to the method it would return nil like this:
~~~ ruby
class Foo
def bar(baz)
baz&.qux || 'whatever'
end
end
~~~
In order to not break backwards compatibility we should keep the current behaviour as well so the rational would be:
~~~ ruby
nil&.any_method
# => nil
foo&.non_responding_method
# => nil
~~~