右侧值不匹配的 Erlang 异常错误
Erlang exception error for no match of right hand side value
我有这段代码应该在列表中打印数字 1 到 N-1,但是这里的 I
不会附加到列表中。
enum(N,[],N) -> [];
enum(N,L,I) ->
io:format("current number: ~w~n", [I]),
L = L ++ I,
enum(N,[],I+1).
enumFunc(N) -> enum(N,[],1).
当我运行sample:enumFunc(100).,它returnsexception error: no match of right hand side value [1]
请帮我解决这个问题。谢谢
Erlang 是一种单一赋值语言。这意味着如果一个值已经分配给 L
,则不能将新值分配给 L
。当您尝试通过 L = L ++ I
'assign' 一个新值时,您实际上是在执行 匹配 操作。您看到 no match of right hand side value [1]
错误的原因是因为 L
不等于 L ++ I
因为 L
已经分配了 [1]
的值并且不匹配 [1,2]
enum(N,L,N) -> L;
enum(N,L,I) ->
io:format("current number: ~w~n", [I]),
L0 = L ++ [I],
enum(N,L0,I+1).
enumFunc(N) -> enum(N,[],1).
我有这段代码应该在列表中打印数字 1 到 N-1,但是这里的 I
不会附加到列表中。
enum(N,[],N) -> [];
enum(N,L,I) ->
io:format("current number: ~w~n", [I]),
L = L ++ I,
enum(N,[],I+1).
enumFunc(N) -> enum(N,[],1).
当我运行sample:enumFunc(100).,它returnsexception error: no match of right hand side value [1]
请帮我解决这个问题。谢谢
Erlang 是一种单一赋值语言。这意味着如果一个值已经分配给 L
,则不能将新值分配给 L
。当您尝试通过 L = L ++ I
'assign' 一个新值时,您实际上是在执行 匹配 操作。您看到 no match of right hand side value [1]
错误的原因是因为 L
不等于 L ++ I
因为 L
已经分配了 [1]
的值并且不匹配 [1,2]
enum(N,L,N) -> L;
enum(N,L,I) ->
io:format("current number: ~w~n", [I]),
L0 = L ++ [I],
enum(N,L0,I+1).
enumFunc(N) -> enum(N,[],1).