给出水果名称返回水果价格,如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)
).
测试。