私はそのようなコードを持っています:
case sth of
{a, 1} -> doA();
{a, 2} -> doA();
{a, 3} -> doB()
end.
「doA()」部分を繰り返さない方法はありますか? 簡単だと思ったのですが、グーグルで答えが見つかりませんでした。
次のような case ステートメントで when ガードを使用できます。
case sth of
{a, Var} when Var < 3-> doA();
{a, 3} -> doB()
end.
また、あなたの式(sth
)はここではアトムであり、これらのケースのいずれにも一致しないことを意味します。
@Bunnit によって提案された方法でガードを使用する以外に、句本体の繰り返しを回避する方法はありません。1 つの句に別のパターンを含める方法はありません。あなたの場合、繰り返しはあまりありませんが、繰り返される本体がより複雑な場合は、それを別の関数に入れて呼び出すのが最善の方法です。
この機能を追加することは可能ですが、変数の「興味深い」処理につながります。