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

测试。

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