我有这样一段代码:
case sth of
{a, 1} -> doA();
{a, 2} -> doA();
{a, 3} -> doB()
end.
有没有不重复“doA()”部分的方法?我认为这应该很容易,但我在谷歌上找不到答案。
您可以在case语句中使用when guards,例如:
case sth of
{a, Var} when Var < 3-> doA();
{a, 3} -> doB()
end.
你的表达式(sth
)在这里是一个原子,意味着它永远无法匹配任何一个这些情况。
除了按照@Bunnit建议的方式使用保护措施外,没有避免重复条款体的方法。无法在一个条款中拥有替代模式。在您的情况下,重复的体并不多,但如果重复的体更加复杂,则最好将其放在单独的函数中并调用该函数。
虽然可能,但添加此功能会导致对变量的一些“有趣”的处理。