Techioz Blog

Rubyでswitch文を書く方法

概要

Rubyでswitch文を書くにはどうすればよいですか?

解決策

Ruby は代わりに case 式を使用します。

case x
when 1..5
  "It's between 1 and 5"
when 6
  "It's 6"
when "foo", "bar"
  "It's either foo or bar"
when String
  "You passed a string"
else
  "You gave me #{x} -- I have no idea what to do with that."
end

Ruby は === 演算子を使用して、when 句のオブジェクトと case 句のオブジェクトを比較します。たとえば、x === (1..5) ではなく、(1..5) === x です。

これにより、上記のように洗練された when 句が可能になります。単なる平等性だけでなく、範囲、クラス、その他あらゆる種類のものをテストできます。

他の多くの言語の switch ステートメントとは異なり、Ruby の場合にはフォールスルーがないため、ブレークでそれぞれを終了する必要はありません。 when “foo”、“bar” のように、単一の when 句で複数の一致を指定することもできます。