From: mame@... Date: 2019-12-03T05:16:58+00:00 Subject: [ruby-core:96066] [Ruby master Feature#16374] Object#nullify to provide scalars with the effect similar to Enumerable#reject Issue #16374 has been updated by mame (Yusuke Endoh). IMO, `[1, 2].nullify(&:empty?)&.then(&:join)` is just cryptic. BTW, why do you write `&.then(&:join)`? I'm afraid you have been corrupted by `&:sym`. ---------------------------------------- Feature #16374: Object#nullify to provide scalars with the effect similar to Enumerable#reject https://bugs.ruby-lang.org/issues/16374#change-82913 * Author: cvss (Kirill Vechera) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- How about adding a new method to Object class? ``` class Object def nullify &block block.call(self) ? nil : self end end irb(main):139:0> 'asdf'.nullify(&:empty?) => "asdf" irb(main):140:0> ''.nullify(&:empty?) => nil ``` It can be used together for chaining several methods with conditions. E.g. with &. operator and #then: ``` irb(main):154:0> [1, 2].nullify(&:empty?)&.then(&:join) => "12" irb(main):155:0> [].nullify(&:empty?)&.then(&:join) => nil irb(main):156:0> [].join => "" irb(main):161:0> 'a b'.nullify(&:empty?)&.then(&:split) => ["a", "b"] irb(main):162:0> ''.nullify(&:empty?)&.then(&:split) => nil irb(main):163:0> ''.split => [] ``` P.S. A similar opposite operation is available as a chain of ['then.detect'](https://ruby-doc.org/core-2.6.5/Object.html#method-i-then) -- https://bugs.ruby-lang.org/ Unsubscribe: