作者:勤劳的蛇zhong_138 | 来源:互联网 | 2023-05-25 17:59
我刚拿起Erlang时遇到一个简单的问题,但无法修复它或找到任何有关它的东西。我正在尝试定义一个模块来检查an 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.
Łukasz Ptasz..
6
erlang中的绑定以大写字母开始。因此应该是:
-module(veggies).
-export([veggieMember/2]).
veggieMember(VeggieList,Query)->
case lists:member(Query, VeggieList) of
true -> VeggieList;
false -> [Query|VeggieList]
end.
在您的示例中,它不起作用,因为没有匹配的函数子句。Atom veggieList
与list 不匹配,atom [cucumber,tomato,potato]
与atom query
不匹配tomato
。
错误本身,它是标准错误之一。这意味着您已调用函数,并且没有;
匹配任何函数子句(以分隔)。
1> Łukasz Ptasz..:
erlang中的绑定以大写字母开始。因此应该是:
-module(veggies).
-export([veggieMember/2]).
veggieMember(VeggieList,Query)->
case lists:member(Query, VeggieList) of
true -> VeggieList;
false -> [Query|VeggieList]
end.
在您的示例中,它不起作用,因为没有匹配的函数子句。Atom veggieList
与list 不匹配,atom [cucumber,tomato,potato]
与atom query
不匹配tomato
。
错误本身,它是标准错误之一。这意味着您已调用函数,并且没有;
匹配任何函数子句(以分隔)。