From: matz@... Date: 2016-05-22T12:34:17+00:00 Subject: [ruby-core:75677] [Ruby trunk Bug#12412][Rejected] Extend safe navigation operator Issue #12412 has been updated by Yukihiro Matsumoto. Status changed from Open to Rejected Although I don't say your idea is totally bad, it's not good to add it to Ruby for several reasons: * it's not compatible * introducing a new global variable is a terrible idea for any reason * it would be slower by using respond_to? in run time * it will hinder future type inference which is supposed to be introduced in Ruby3 Matz. ---------------------------------------- Bug #12412: Extend safe navigation operator https://bugs.ruby-lang.org/issues/12412#change-58809 * Author: Daniel Ferreira * Status: Rejected * 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: