給出水果名稱返回水果價格,如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)
).
測試。