From: nobu@... Date: 2016-05-22T08:16:54+00:00 Subject: [ruby-core:75674] [Ruby trunk Bug#12412] Extend safe navigation operator Issue #12412 has been updated by Nobuyoshi Nakada. It's a rejected behavior in the former discussions. ---------------------------------------- Bug #12412: Extend safe navigation operator https://bugs.ruby-lang.org/issues/12412#change-58806 * Author: Daniel Ferreira * Status: Open * Priority: Normal * Assignee: * ruby -v: * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- 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 ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: