1

我有两个功能,一个是读取一个单词并将该单词保存到哈希表中,另一个是需要保存在哈希表中的单词(列表)集合。当我运行该问题时,它显示“功能错误 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).
4

1 回答 1

2

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

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

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

您可以在手册Fun syntax中阅读有关此内容的更多信息。

于 2013-10-15T06:04:36.307 回答