在惯用的 Erlang 中,模式匹配是首选还是 case 语句?

Low*_*ong 0 erlang pattern-matching switch-statement

这段代码中哪一段是 Erlang 中的首选方式,为什么?

sumOfMultiples(Multiples, 1) ->
  0;

sumOfMultiples(Multiples, N) ->
  cal_multiples(Multiples, lists:seq(1, N-1), 0).
Run Code Online (Sandbox Code Playgroud)

或者

sumOfMultiples(Multiples, N) ->
  case N of
    1 -> 0;
    cal_multiples(Multiples, lists:seq(1, N-1), 0)
  end
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 5

标题不太正确,因为case 模式匹配(并且是表达式,而不是语句)。

可能会稍微偏向多子句定义,因为当您想要匹配多个参数时,使用它会更好,但两者都是完全惯用的。