Ruby の「splat」またはフラット化構文を利用することもできます。
これにより、過大なwhen
句が作成されます — 私の意見では、私の理解が正しければ、分岐ごとに約 10 個の値をテストする必要があります — 少し読みやすくなります。さらに、実行時にテストする値を変更できます。例えば:
honda = ['honda', 'acura', 'civic', 'element', 'fit', ...]
toyota = ['toyota', 'lexus', 'tercel', 'rx', 'yaris', ...]
...
if include_concept_cars
honda += ['ev-ster', 'concept c', 'concept s', ...]
...
end
case car
when *toyota
# Do something for Toyota cars
when *honda
# Do something for Honda cars
...
end
別の一般的なアプローチは、ハッシュをディスパッチ テーブルとして使用することです。各値のキーと、car
実行するコードをカプセル化する呼び出し可能なオブジェクトである値を使用します。