【erlang】練習題0003.計算水果價格

給出水果名稱返回水果價格,如apple=2,oranges=5,自己定義數據結構。

現給出一個購買清單,5個蘋果,4個梨子,如:L = [{oranges,4},{apples,2}]

請用一個total函數計算總價。

如:total(L). 返回24

 

 

 

 

 

 


學習難點:

掌握lists模塊sum、map方法。

map函數(F,[H|T]),可以根據你自己寫的F方法,對你給出的[H|T]這個列表中每一個元素H,進行F(H)處理,返回一個新的列表。

sum函數把列表中每一個元素相加並返回結果。

 

掌握3.7.3小節 提取列表元素。

掌握4.3小節    匿名函數的使用。

 

解決思路:

首先定義出數據結構

-module(shop).
-export([cost/1]).

cost(oranges) -> 5;
cost(newspaper) -> 8;
cost(apples) -> 2;
cost(pears) -> 9;
cost(milk) -> 7.

編寫total函數,利用lists模塊中的sum函數和map函數,以及匿名函數、讀取列表List每個Item屬性,數量 * 價格得出總價。

-module(shop2).
-import(lists,[sum/1,map/2]).
-export([total/1]).

total(L) ->
    sum(map(
        fun(Item)-> 
            {Fruit,Number} = Item,
            Number * shop:cost(Fruit)
        end,L)
    ).

測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章