列表解析
cost(apple) ->5;
cost(pear) ->2;
cost(milk) ->3.
List = [{apple, 2}, {pear,2}].
list_total(L)->
sum(lists:map(fun({What,N}) -> cost(What)*N end, L) ).
等价于
lists:sum([test:cost(What) * Num || {What,Num}<-List]).
|| 左边是计算方式, 右边是匹配模式
{What,Num}<-List
有点像 PHP这样写
foreach ($List as $Info) {
$What = $Info[0];
$Num = $Info[1];
}
完整模式是 [F || {X,Y} <- L, F_Bool].
F 可以是元组, 也可以是单个表达式,或者函数
F_Bool 是返回bool的函数, 或者bool表达式