没有匹配erlang的函数子句

时间:2015-01-21 12:55:36

标签: erlang erlang-shell

我刚拿起erlang而且我遇到了一个简单的问题,但是我无法修复它或找到任何关于它的信息。我试图定义一个模块来检查一个原子是否在给定的列表中。我通过erlang shell进入列表,如下所示:

蔬菜:veggieMember([黄瓜,番茄,马铃薯],番茄)

但我总是得到异常错误:没有匹配的函数子句

也许我误解了基础知识,但这是我试图做的模块代码:

-module(veggies).

-export([veggieMember/2]).

veggieMember(veggieList,query)->
case lists:member(query, veggieList) of
    true->veggieList;
    false->[query|veggieList]
end.

1 个答案:

答案 0 :(得分:4)

在erlang中绑定以大写字母开头。所以它应该是:

-module(veggies).

-export([veggieMember/2]).

veggieMember(VeggieList,Query)->
case lists:member(Query, VeggieList) of
    true -> VeggieList;
    false -> [Query|VeggieList]
end.

在您的示例中,它不起作用,因为没有匹配的函数子句。原子veggieList与列表[cucumber,tomato,potato]不匹配,原子query与原子tomato不匹配。