[#97086] [Ruby master Bug#16612] Enumerator::ArithmeticSequence#last with float range produces incorrect value — muraken@...
Issue #16612 has been updated by mrkn (Kenta Murata).
4 messages
2020/02/07
[#97095] [PATCH] Modify shebang of libexec/y2racc and libexec/racc2y. — Wang Mingyu <wangmy@...>
change /usr/local/bin/ruby to /usr/bin/env ruby.
3 messages
2020/02/08
[#97307] [Ruby master Feature#16663] Add block or filtered forms of Kernel#caller to allow early bail-out — headius@...
Issue #16663 has been reported by headius (Charles Nutter).
29 messages
2020/02/28
[ruby-core:97275] [Ruby master Feature#15722] `Kernel#case?`
From:
manga.osyo@...
Date:
2020-02-27 04:51:05 UTC
List:
ruby-core #97275
Issue #15722 has been updated by osyo (manga osyo).
What about using `#when?` instead of `#case?`?
```ruby
bar # => "bar"
flag1 = case bar; when "foo", "bar", "baz"; true; end # => true
flag2 = case bar; when Symbol, String; true; end # => true
# Proposal by sawa
flag1 = bar.case? "foo", "bar", "baz" # => true
flag2 = bar.case? Symbol, String # => true
# Proposal by osyo
flag1 = bar.when? "foo", "bar", "baz" # => true
flag2 = bar.when? Symbol, String # => true
```
I think this is closer to the syntax of `case when`.
And what about adding a oneline `when` like a oneline `in` ?
```ruby
bar # => "bar"
flag1 = case bar; when "foo", "bar", "baz"; true; end # => true
flag2 = case bar; when Symbol, String; true; end # => true
flag1 = bar when "foo", "bar", "baz" # => true
flag2 = bar when Symbol, String # => true
```
----------------------------------------
Feature #15722: `Kernel#case?`
https://bugs.ruby-lang.org/issues/15722#change-84392
* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
----------------------------------------
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 `==`.
Or, alternatively, allowing `Kernel#instance_of?` and `Kernel#kind_of?` to allow multiple arguments may be a compromise.
--
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>