在idiomatic Erlang中是模式匹配优先还是case语句?

时间:2018-03-26 02:04:16

标签: erlang switch-statement pattern-matching

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

sumOfMultiples(Multiples, 1) ->
  0;

sumOfMultiples(Multiples, N) ->
  cal_multiples(Multiples, lists:seq(1, N-1), 0).

sumOfMultiples(Multiples, N) ->
  case N of
    1 -> 0;
    cal_multiples(Multiples, lists:seq(1, N-1), 0)
  end

1 个答案:

答案 0 :(得分:4)

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

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