通过返回列表 Erlang

Pass returned list Erlang

我想将返回的列表传递给 case,但我得到的是

"->" Error

这是我的代码:

parse ( Element, [] ) -> false;
parse(Element,N) ->  re:split(N,"([*+])",[{return,list}]),


parse ( Element, [ Item | ListTail ] ) ->
case ( Item == Element ) of
    true    ->  true;
    false   ->  listFind(Element, ListTail)
end.

我不知道如何将返回的列表传递到案例中,有人可以帮忙吗?

如果你想在case中测试re:split/3的结果,你需要去掉卡在parse/2第二个子句中的无关函数头。您也不需要 parse/2 的第一个子句,因为它是不必要的且未被使用。只需查看 re:split/3Element 的结果,如下所示:

parse(Element, N) ->
    Elements = re:split(N,"([*+])",[{return,list}]),
    lists:member(Element, Elements).

例如,如果参数 N 的值为 "a*b+c*d+e",则 re:split/3 调用 returns ["a","*","b","+","c","*","d","+","e"](假设这正是您想要的).调用 lists:member/2 然后在该结果中搜索 Element 的值,如果找到则返回 true,如果未找到则返回 false