【发布时间】:2016-05-05 05:30:57
【问题描述】:
我正在尝试查看列表中是否存在字母,我目前正在执行以下操作
sortedlist(Text)-> freq(lists:sort(Text)).
freq(List) -> freq (List, [], []).
freq(List, Freq, CheckedLetters) when length(List) > 0 ->
[CurrHead|T]= List,
Checked = lists:member(CurrHead,CheckedLetters),
case Checked of
false -> CheckedLetters++[CurrHead],
freq(T,Freq++[{CurrHead,count(CurrHead, List)}],CheckedLetters);
true -> freq(T,Freq,CheckedLetters)
end;
freq([],Freq,CheckedLetters)-> Freq.
列表包含用户输入的字母
CheckedLetters 是一个空列表,它将跟踪已检查的字母
但我在 case-statement 行(带有 ** 的行)收到以下 erlang 异常。
错误:右侧值不匹配 []
这里有什么问题?我一直在盲目地盯着那些线条。
【问题讨论】:
-
我怀疑要么你在误导自己,真正的错误是
List是[],所以永远不能匹配[CurrHead|T],它只能匹配一个或多个列表元素,或者你没有展示足够多的代码来让任何人找到真正的问题。 -
现在包含完整的代码 :) !
标签: erlang