Issue #16374 has been updated by sawa (Tsuyoshi Sawada).


This is a duplicate of https://bugs.ruby-lang.org/issues/13807, which I have proposed and withdrawn. I have proposed an alternative https://bugs.ruby-lang.org/issues/15557.

----------------------------------------
Feature #16374: Object#nullify to provide scalars with the effect similar to Enumerable#reject
https://bugs.ruby-lang.org/issues/16374#change-83010

* 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>