From: grzegorz.bizon@... Date: 2015-04-14T06:51:17+00:00 Subject: [ruby-core:68886] [Ruby trunk - Feature #11034] Nil Conditional Issue #11034 has been updated by Grzegorz Bizon. Hi again ! I've made new attempt to create nil conditional operator (https://github.com/nil-conditional). This is Ruby implementation, you can check it out here: https://github.com/grzesiek/nil-conditional/blob/master/lib/nil_conditional.rb. It is simple, it encapsulates objects in NilConditional instance. Sample usage: ~~~ def nil_test(str) str._?.concat("456") end nil_test("123") => "123456" nil_test(nil) => # nil_test(nil).nil? => true ~~~ What do you think about that ? It seems (for me) that this is sufficient, and native implementation is not necessary with this approach. Anyway, thanks for feedback ! Kind regards, Grzegorz ---------------------------------------- Feature #11034: Nil Conditional https://bugs.ruby-lang.org/issues/11034#change-52155 * Author: Grzegorz Bizon * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Hi everyone ! Some time ago I was thinking about Nil Conditional Operator in Ruby (`??`). This would be particularly useful to avoid frequent checking for nil, and should behave and look like Null Conditional Operator introduced in C# 6.0. I was thinking about something like this (assume `var` is nil or doesn't exist): ~~~ruby var??.method1.method2(123, 345).method3 { |i| i == 1 } => nil ~~~ When `var` is nil or doesn't exist, code above should return nil or NilConditionalClass object instead of raising NoMethodError or NameError. This can also work with methods (assume `var` exists): ~~~ruby var.method1??.method2(a, b) => nil ~~~ When `var` exists and can receive `method1`, but `method1` returns nil - this shouldn return nil instead of raising `NoMethodError: undefined method `method2' for nil:NilClass` When `var` exists and is not nil, and can receive `method1`, and object returned by `method1` can receive `method2` this, of course should behave as expected (like version without `??` operator) and return value according to implementation of method2. When `var` doesn't exist - this should raise NameError. I tried to create gem for that (https://github.com/grzesiek/nil-conditional) but from now on, only native implementation seems reasonable. What do you think about that feature ? Maybe it is already considered, but I couldn't find anything similar at Google/this issue tracker (in that case I'm sorry for duplicate). Thanks in advance for feedback ! Kind regards, Grzegorz -- https://bugs.ruby-lang.org/