0

変数は erlang では変数にできないことがわかっているためです。しかし、このコードを考えてみましょう。[1,2,3,4] の各値が N に順次パターン マッチングされ、例外がスローされないのはなぜですか??

1> [2*N || N <- [1,2,3,4]].
[2,4,6,8]
4

1 に答える 1

4

変数を変数にすることはできないと言うのは、まったく真実ではありません。さらに、変数を割り当てることができるのは1回だけです。したがって、次の疑似コードは違法です。

N = 4;
foo(N);
N = N + 1;
foo(N);

ただし、以下は合法です。

fact(0) -> 1,
fact(N) -> N * fact(N-1).

fact(4)を呼び出すと、Nは、異なる関数呼び出しごとに値4、3、2、1の順になります。上に表示しているコードは似ています。リスト内のアイテムごとに、Nは異なる値を取ります。ただし、Nの値を2回以上割り当てたことはありません。

于 2012-08-15T06:55:22.330 に答える