From: sawadatsuyoshi@... Date: 2017-03-09T05:05:57+00:00 Subject: [ruby-core:79976] [Ruby trunk Feature#13290] A method to use a hash like in a case construction Issue #13290 has been updated by Tsuyoshi Sawada. Yusuke Endoh wrote: > ~~~~ > h.find {|a,| a === "barbar" }.last #=> "BAR" > ~~~~ > > This is good enough to me. I expected something that would be as easy as and comparable to `h[k]`. ---------------------------------------- Feature #13290: A method to use a hash like in a case construction https://bugs.ruby-lang.org/issues/13290#change-63399 * Author: Tsuyoshi Sawada * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- We often want to translate a hash into a case construction and back. For example, suppose we have a case construction like this: ```ruby case key when /foo/ then "FOO" when /bar/ then "BAR" else "DEFAULT" end ``` Given that the keys are ordered within a hash since Ruby 1.9, the information used in the case construction above can be expressed as a hash `h`: ```ruby h = { /foo/ => "FOO" /bar/ => "BAR" ... } h.default = "DEFAULT" ``` At the moment, there is no straightforward way to translate the hash `h` into the case construction as above. I would like to have a method on `Hash` that takes a key and works like a case construction (i.e., applies the `===` method) as below: ```ruby h.fetch_as_in_case_construction("barbar") # => "BAR" ``` The name `fetch_as_in_case_construction` is terrible. Perhaps someone can suggest a better name. -- https://bugs.ruby-lang.org/ Unsubscribe: