Project

General

Profile

Actions

Bug #12412

closed

Extend safe navigation operator

Added by dsferreira (Daniel Ferreira) over 8 years ago. Updated over 8 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:75665]

Description

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:

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:

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:

nil&.any_method
# => nil

foo&.non_responding_method
# => nil
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0