Actions
Feature #15722
closed`Kernel#case?`
Status:
Feedback
Assignee:
-
Target version:
-
Description
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:
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:
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.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0