Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
正如我们所知,变量在 erlang 中不能是变量。但是考虑这段代码,为什么 [1,2,3,4] 的每个值都按顺序与 N 模式匹配,并且不抛出异常?
1> [2*N || N <- [1,2,3,4]]. [2,4,6,8]
说变量不能是变量并不完全正确。更重要的是,一个变量只能分配一次。所以下面的伪代码是非法的:
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 具有不同的值。但是您从未多次分配 N 的值。