我有两个函数,一个是读取单词并将该单词保存到散列表中,另一个是需要保存在散列表中的单词(列表)集合。当我运行问题时,它会说"功能不良功能2"。我知道在foldl中调用function2是错误的。所以我的问题是如何在function3中使用function2而不会导致问题。首先以列表作为参数调用Function3。该分配的目标是为单词列表创建哈希表。谢谢
function2(Word,HashTable)->
case lists:keyfind(Word,1,HashTable) of
{Key,Value}->
lists:keyreplace(Word,1,HashTable,{Word,Value+1});
false ->
lists:append({Word,1},HashTable)
end.
function3(List)->
ResultTable={},
lists:foldl(Function2,ResultTable,List).
答案 0 :(得分:2)
在折叠中使用function2
没有任何问题。只需确保正确命名:
lists:foldl(fun function2/2, ResultTable, List).
您使用构造fun
来表示“这里有一个函数”。 /2
必须在那里指定你所使用的函数的变体,因为Erlang可以有相同名称和不同参数列表的多个函数。
您可以在手册Fun syntax中了解更多相关信息。