Techioz Blog

複数の変数を含む Ruby case ステートメント

概要

Ruby には、単一の変数に対して条件を一致させる必要がある場合に使用する、非常に強力な case..when..else 構造があります。 case ステートメントを単純にネストせずに、複数の変数に対して基準を一致させる「標準的な」方法は何ですか?

複数の変数を配列 ([x, y] など) にラップすることと、それと照合することは同等ではありません。Ruby は配列の要素に魔法のケース === 演算子を適用しないからです。演算子は配列自体にのみ適用されます。

私は先に進んで、この質問に対して(敗北した)コミュニティウィキの回答で答えるつもりです。

解決策

if..elsif..else を使用し、照合する変数が === 演算子の右側にあることを確認する必要があります (これは case が本質的に行うことです)。

たとえば、x と y をいくつかの基準と照合したい場合は、次のようにします。

if (SomeType === x) && (1..10 === y)
  some_value
elsif (:some_symbol === x) && (11..20 === y)
  some_other_value
end