Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 为什么';没有匹配的函数子句';即使四个参数被传递给一个4的函数?_Erlang - Fatal编程技术网

Erlang 为什么';没有匹配的函数子句';即使四个参数被传递给一个4的函数?

Erlang 为什么';没有匹配的函数子句';即使四个参数被传递给一个4的函数?,erlang,Erlang,这是我的问题代码: -module(test). -export([seed_matrix2/0, take_row_and_column/4]). seed_matrix2() -> [0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0]. take_row_and_column(R, C, AnsMatrix, SideLen) -> RowVector = [ V || X <-

这是我的问题代码:

-module(test).
-export([seed_matrix2/0, take_row_and_column/4]).


seed_matrix2() ->
    [0, 0, 1, 0,
     4, 0, 0, 0,
     0, 0, 0, 2,
     0, 4, 0, 0].

take_row_and_column(R, C, AnsMatrix, SideLen) ->
    RowVector = [ V || X <- lists:seq(0, SideLen-1), V <- lists:nth(R*SideLen+X, AnsMatrix) ],
    ColVector = [ V || X <- lists:seq(0, SideLen-1), V <- lists:nth(X*SideLen+C, AnsMatrix) ],
    {RowVector, ColVector}.
我通常在传递错误数量的参数或无法满足类型保护时得到此结果。我不明白为什么此代码会触发
no function子句匹配

以下是
erl
的版本标志:

Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V5.10.4  (abort with ^G)

所讨论的失败函数是编译器生成的用于列表理解的函数(请注意名称中的“-lc$…”。看起来这是因为生成器V所讨论的失败函数是编译器为列表理解生成的函数(注意名称中的“-lc$…”)。看起来这是因为您的发电机V以下是修复方法:

take_row_and_column(R, C, AnsMatrix, SideLen) ->
    RowVector = [ lists:nth((R-1)*SideLen+X, AnsMatrix) || X <- lists:seq(1, SideLen-1) ],
    ColVector = [ lists:nth((X-1)*SideLen+C, AnsMatrix) || X <- lists:seq(1, SideLen-1) ],
    {RowVector, ColVector}.  
获取行和列(R、C、AnsMatrix、SideLen)->
RowVector=[列出:n((R-1)*SideLen+X,AnsMatrix)| | X以下是修复方法:

take_row_and_column(R, C, AnsMatrix, SideLen) ->
    RowVector = [ lists:nth((R-1)*SideLen+X, AnsMatrix) || X <- lists:seq(1, SideLen-1) ],
    ColVector = [ lists:nth((X-1)*SideLen+C, AnsMatrix) || X <- lists:seq(1, SideLen-1) ],
    {RowVector, ColVector}.  
获取行和列(R、C、AnsMatrix、SideLen)->

行向量=[列表:第n((R-1)*侧边+X,矩阵)| | X感谢您的回答。虽然建议的解决方案无法解决问题,但您的回答有助于我理解错误消息!感谢您的回答。虽然建议的解决方案无法解决问题,但您的回答有助于我理解错误消息!如果您的种子矩阵是更明显的代表性列表列表,则在上,代码会简单得多。如果您的种子矩阵是一个列表列表,它是更明显的表示形式,那么代码会简单得多。