2013-10-15 33 views
1

我有兩個功能,一個是讀取單詞並將該單詞保存到散列表中,另一個是需要的單詞(列表)集合保存在散列表中。當我運行這個問題時,它說「功能不好的功能2」。我知道在foldl中調用function2是錯誤的。所以我的問題是如何在function3中使用function2而不會導致問題。函數3將首先以列表作爲參數被調用。此作業的目標是爲單詞列表創建散列表。謝謝如何使用列表將單詞保存到散列表中:foldl

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). 

回答

2

在摺疊中使用function2沒有任何問題。只要確保你正確地命名爲:

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

您使用結構fun說,「又來了一個功能」。 /2必須在那裏指定你之後的函數的變體,因爲Erlang可以通過相同的名稱和不同的參數列表來具有多個函數。

您可以在手冊Fun syntax中閱讀更多關於此的內容。

+0

Ty,現在我對「樂趣」有了更多的瞭解。 – user1874435