case ... when ... [else ...] end
Ruby は switch ... case でなく、case ... when を採用したわけだが、その由来がわからなかった。今日は Oracle と遊んでいて(仕事です)、もしかして、SQL の CASE 演算子と関係あるんだろうか? と思った。今まで思いつかなかったぁ。
そう考えると
sex = case val when "0" "not known" when "1" "male" when "2" "female" when "9" "not specified" end
と、値が採れるのも、私の中で今までより受け入れられるようになった。
いや、さらに、
sex = case val when "0" then "not known" when "1" then "male" when "2" then "female" when "9" then "not specified" end
これもできた方が良い様な気がしてきた。
2006-03-17追記: then を入れた。そして動いた!
$ ruby -e 'puts case readline.chomp when "0" then "not known" when "1" then "male" when "2" then "female" when "9" then "not specified" end'
うはっ、キモスw。この感動をリファレンスマニュアルの case の項に伝えたいが、どう伝えたらいいかもどかしい気持ち。「then」って「;」や「改行」と同義なのだろうか?(あとでソースを読む。)
しかし、まつもとさんからは全く RDB の匂いを感じないからなぁ。私の知らない言語由来かなぁ。……あれ? そういや、Postgres モジュールって、オリジナルはまつもとさんだったような。誤印象だな。>匂い