From: nobu@... Date: 2019-12-03T05:40:10+00:00 Subject: [ruby-core:96067] [Ruby master Feature#16374] Object#nullify to provide scalars with the effect similar to Enumerable#reject Issue #16374 has been updated by nobu (Nobuyoshi Nakada). I think I've proposed `Object#not` (and `Object#!`) for this purpose. ---------------------------------------- Feature #16374: Object#nullify to provide scalars with the effect similar to Enumerable#reject https://bugs.ruby-lang.org/issues/16374#change-82914 * 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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>