没有匹配 erlang 的函数子句
no function clause matching erlang
我刚刚拿起 Erlang,我 运行 遇到了一个简单的问题,但我无法修复它或找到任何相关信息。我正在尝试定义一个模块来检查 atom
是否在给定列表中。我通过 Erlang shell 像这样进入列表:
veggies:veggieMember([cucumber,tomato,potato],tomato).
但我总是得到 exception error: no function clause matching
也许我误解了基础知识,但这是我正在尝试做的模块代码:
-module(veggies).
-export([veggieMember/2]).
veggieMember(veggieList,query)->
case lists:member(query, veggieList) of
true->veggieList;
false->[query|veggieList]
end.
erlang 中的绑定以大写字母开头。所以应该是:
-module(veggies).
-export([veggieMember/2]).
veggieMember(VeggieList,Query)->
case lists:member(Query, VeggieList) of
true -> VeggieList;
false -> [Query|VeggieList]
end.
在您的示例中它不起作用,因为没有匹配的函数子句。 Atom veggieList
不匹配列表 [cucumber,tomato,potato]
并且 atom query
不匹配 atom tomato
.
错误本身,它是 standard errors 之一。这意味着您已经调用了函数并且 none 个函数子句(由 ;
分隔)匹配。
我刚刚拿起 Erlang,我 运行 遇到了一个简单的问题,但我无法修复它或找到任何相关信息。我正在尝试定义一个模块来检查 atom
是否在给定列表中。我通过 Erlang shell 像这样进入列表:
veggies:veggieMember([cucumber,tomato,potato],tomato).
但我总是得到 exception error: no function clause matching
也许我误解了基础知识,但这是我正在尝试做的模块代码:
-module(veggies).
-export([veggieMember/2]).
veggieMember(veggieList,query)->
case lists:member(query, veggieList) of
true->veggieList;
false->[query|veggieList]
end.
erlang 中的绑定以大写字母开头。所以应该是:
-module(veggies).
-export([veggieMember/2]).
veggieMember(VeggieList,Query)->
case lists:member(Query, VeggieList) of
true -> VeggieList;
false -> [Query|VeggieList]
end.
在您的示例中它不起作用,因为没有匹配的函数子句。 Atom veggieList
不匹配列表 [cucumber,tomato,potato]
并且 atom query
不匹配 atom tomato
.
错误本身,它是 standard errors 之一。这意味着您已经调用了函数并且 none 个函数子句(由 ;
分隔)匹配。