Erlang,使用保护之前的语法错误

时间:2014-12-27 22:41:57

标签: syntax erlang

map_search_pred(Map,Pred) where is_map(Map)-> map_search_pred(maps:to_list(Map), Pred);
map_search_pred([H|Tail], Pred) -> 
    case Pred(H) of
        true -> H;
        false -> map_search_pred(Tail, Pred)
    end;
map_search_pred([], Pred) -> {error, Pred}.

我之前的语法错误是"其中"第7行,即此代码中的第1行。我不知道为什么会抛出这个但是我仍然是erlang的初学者所以我可能在途中错过了一些东西。

1 个答案:

答案 0 :(得分:1)

以关键字when而不是where

开头的保护序列
Name(Pattern11,...,Pattern1N) [when GuardSeq1] ->
    Body1;
...;
Name(PatternK1,...,PatternKN) [when GuardSeqK] ->
    BodyK.

where应由代码

中的when替换
map_search_pred(Map,Pred) when is_map(Map)-> map_search_pred(maps:to_list(Map), Pred);
map_search_pred([H|Tail], Pred) -> 
    case Pred(H) of
        true -> H;
        false -> map_search_pred(Tail, Pred)
    end;
map_search_pred([], Pred) -> {error, Pred}.