Issue #13067 has been updated by Eli Sadoff.


I think that a possible middle ground replacement would be to introduce truthy and falsy constants into `TrueClass` and `FalseClass` respectively. You could then do, for example,

~~~ ruby
case 1
when true then puts 'This will not match'
when TrueClass::TRUTHY puts 'But this will'
end
~~~




----------------------------------------
Feature #13067: TrueClass,FalseClass to provide `===` to match truthy/falsy values.
https://bugs.ruby-lang.org/issues/13067#change-62356

* Author: Yukihiro Matsumoto
* Status: Open
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Target version: 
----------------------------------------
I propose to make `TrueClass`, `FalseClass` to provide `===` method to match truthy values (`TrueClass`), and falsy values (`FalseClass`), so that we can use true and false for case pattern matching.  And we can pick truthy values using `grep` e.g. `ary.grep(true)`.

Matz.



-- 
https://bugs.ruby-lang.org/