如何使用列表将单词保存到哈希表中:foldl

时间:2013-10-15 05:57:52

标签: erlang

我有两个函数,一个是读取单词并将该单词保存到散列表中,另一个是需要保存在散列表中的单词(列表)集合。当我运行问题时,它会说"功能不良功能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).

1 个答案:

答案 0 :(得分:2)

在折叠中使用function2没有任何问题。只需确保正确命名:

lists:foldl(fun function2/2, ResultTable, List).

您使用构造fun来表示“这里有一个函数”。 /2必须在那里指定你所使用的函数的变体,因为Erlang可以有相同名称和不同参数列表的多个函数。

您可以在手册Fun syntax中了解更多相关信息。