滅多に大量のwhenとかしないんですが、やる場合のメモ
環境
$ ruby -v ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]
実例
対象の値が taro
か ziro
の場合だけ同じ反応をするようなcase文を書く
,
で区切る場合
NAME_KEYS = "taro","ziro" target_value = "taro" case target_value when "taro","ziro" p "taro or ziro" when "kentaro" p "kentaro" else p "other name" end
とやると反応するようになる
配列で対象を管理したい場合
直感的にいくと…
NAME_KEYS = ["taro","ziro"] target_value = "taro" case target_value when NAME_KEYS p "taro or ziro" when "kentaro" p "kentaro" else p "other name" end
できそうな気がするが、結果としては
"other name"
となる、それは確かに "taro" === ["taro","ziro"]
が成り立たないので当たり前
そのため、展開させると解決する
NAME_KEYS = ["taro","ziro"] target_value = "taro" case target_value when *NAME_KEYS p "taro or ziro" when "kentaro" p "kentaro" else p "other name" end