通过返回列表 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/3
对 Element
的结果,如下所示:
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
。
我想将返回的列表传递给 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/3
对 Element
的结果,如下所示:
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
。