Project

General

Profile

Feature #12047

Set#=== (aliased to include?)

Added by Phrogz (Gavin Kistner) over 4 years ago. Updated 8 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:73657]

Description

Add Set#=== as an alias for Set#include? so that sets may be used in case statements:

require 'set'
GOOD_COMMANDS = Set[ :foo, :bar, :jim ]
BAD_COMMANDS  = Set[ :baz, :bax, :jam ]
ODD_COMMANDS  = Set[ :quux, :xyzzy ]

case my_command
  when GOOD_COMMANDS then puts "Yay!"
  when BAD_COMMANDS  then puts "Boo!"
  when ODD_COMMANDS  then puts "Whaa?"
end

Updated by Phrogz (Gavin Kistner) over 4 years ago

  • Subject changed from Set#=== to Set#=== (aliased to include?)

Updated by sawa (Tsuyoshi Sawada) over 4 years ago

I think that is ad hoc. Splat could be used, just like with arrays.

case my_command
when *GOOD_COMMANDS then puts "Yay!"
when *BAD_COMMANDS  then puts "Boo!"
when *ODD_COMMANDS  then puts "Whaa?"
end

And one-time splatting would be also more efficient than calling include? each time.

Updated by jonathanhefner (Jonathan Hefner) 8 months ago

This was added in Ruby 2.5, so I think this issue can be closed.

#4

Updated by jeremyevans0 (Jeremy Evans) 8 months ago

  • Status changed from Open to Closed

Also available in: Atom PDF