rubyでcaseを使ってもうちょっといい感じに書けないものかな?

と思っていたら。。

Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい

つまりこんな書き方が出来る。

obj = 'hoge piyo fuga'
other_obj = {}

val = begin
  case obj
  when nil then 'nilでした'
  when other_obj then '他といっしょ'
  when ->p{p.is_a?(Hash)} then 'Hashです'
  when ->p{p.is_a?(String) && p.split(' ').include?('hoge')} then 'hoge'
  else 'parse error'
  end
end

p val #=> "hoge"

すごいですね-。