模块是存放代码的地方
模块保存在扩展名为.erl的文件里,编译后生成.beam
geometry.erl
-module(geometry).
-export([test/0,area/1]).
//添加测试代码
test() ->
12 = area({rectangle,3,4}),
144 = area(square,12),
tests_worked.
area({rectangle,Width,Height}) -> Width * Height;
area({square,Side}) -> Side * Side.
//调用,下面这个是shell 里的命令
c(geometry).
geometry:area({rectangle,10,5}).
geometry:area({square,3}).
模式匹配循环使用
shop.erl
-module(shop).
-export([cost/1]).
cost(oranges) -> 5;
cost(newspaper) -> 8;
cost(apples) -> 2;
cost(milk) -> 7.
shop1.erl 调用total 计算Buy = [{oranges,4},{newspaper,2},{milk,7}] 的价格,这里的数字代表数量
-module(shop1).
-export([total/1]).
total([{What,N}|T]) -> shop:cost(What) * N + total(T);
total([]) -> 0.
fun
代表函数的数据类型被称为fun。(lambda)
Double = fun(x) -> 2 * x end.
Double(2). //结果=4
求三角形斜边
Hypot = fun(X,Y) -> math:sqrt(X*X + Y*Y) end.
Hypot(3,4). //结果是5.0
fun里的模式匹配,个转换华氏与摄氏温度
TempConve