私は、コードの種類一片ことがあります。Erlangのcase文に複数の一致がありますか?
case sth of
{a, 1} -> doA();
{a, 2} -> doA();
{a, 3} -> doB()
end.
は「DOA()」の部分を繰り返していない方法はありますか?簡単だと思ったけど、Googleで答えが見つからなかった。
私は、コードの種類一片ことがあります。Erlangのcase文に複数の一致がありますか?
case sth of
{a, 1} -> doA();
{a, 2} -> doA();
{a, 3} -> doB()
end.
は「DOA()」の部分を繰り返していない方法はありますか?簡単だと思ったけど、Googleで答えが見つからなかった。
@Bunnitが示唆するようにガードを使用する以外にも、節の本体の繰り返しを避ける方法はありません。 1つの句に代替パターンを持つ方法はありません。あなたのケースでは多くの繰り返しはありませんが、反復したボディがより複雑な場合、最良の方法は、それを別の関数に入れて呼び出すことです。
可能であれば、この機能を追加すると、変数の「面白い」処理が行われます。
などのcase文でガードするときは、使用することができます。また、あなたの式(sth
が)ここでは、それらのいずれかの場合に一致することはできません意味原子
case sth of
{a, Var} when Var < 3-> doA();
{a, 3} -> doB()
end.
です。
私の質問は少し一般的でした。 – zie1ony
また、1と2が<3、はい、0、-1、-2、...のために危険です –