[#92063] [Ruby trunk Misc#15723] Reconsider numbered parameters — zverok.offline@...
SXNzdWUgIzE1NzIzIGhhcyBiZWVuIHVwZGF0ZWQgYnkgenZlcm9rIChWaWN0b3IgU2hlcGVsZXYp
3 messages
2019/03/31
[ruby-core:91926] [Ruby trunk Feature#15722] `Kernel#case?`
From:
manga.osyo@...
Date:
2019-03-22 09:13:11 UTC
List:
ruby-core #91926
Issue #15722 has been updated by osyo (manga osyo).
How about `Enumerable#case?` ?
Comparing with `===` like `Enumerable#include?`.
```ruby
bar # => "bar"
["foo", "bar", "baz"].case? bar # => true
["qux"].case? bar # => false
[Symbol, String].case? bar # => true
[Array].case? bar # => false
```
----------------------------------------
Feature #15722: `Kernel#case?`
https://bugs.ruby-lang.org/issues/15722#change-77258
* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
I often want to use `===` to match a single object on the right side against multiple objects on the left, as is used in `case`-constructions, just to return a truth value, and end up writing like this:
```ruby
bar # => "bar"
flag1 = case bar; when "foo", "bar", "baz"; true; end # => true
flag2 = case bar; when Symbol, String; true; end # => true
```
I propose `Kernel#case?` that should work like this:
```ruby
bar # => "bar"
bar.case?("foo", "bar", "baz") # => true
bar.case?("qux") # => false
bar.case?(Symbol, String) # => true
bar.case?(Array) # => false
bar.case? # => false
```
It is similar to Rails' `in?`, but it differs from it in that it uses `===` for comparison, not `==`.
--
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>