From: danieldasilvaferreira@... Date: 2016-05-22T06:20:58+00:00 Subject: [ruby-core:75671] [Ruby trunk Bug#12412] Extend safe navigation operator Issue #12412 has been updated by Daniel Ferreira. Matthew Kerwin wrote: > Daniel Ferreira wrote: > > I wonder if we couldn't extend the safe navigation operator to work with any object rather than just nil. > > Making it shorthand for `respond_to?` isn't an extension, it changes the operator. What would this do under your proposal? > > ~~~ruby > nil&.nil? > ~~~ You're right. That is a challenge. Is it a blocking issue or can we try to overcome that problem? > > Also your "would become" isn't quite the same if `bar.qux` returns `nil` or `false`. It is not quite the same but what is the issue? ---------------------------------------- Bug #12412: Extend safe navigation operator https://bugs.ruby-lang.org/issues/12412#change-58801 * 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 ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: