学习用的书籍是这个
http://book.douban.com/subject/3260311/
断言:
- 将断言分开的逗号(,)表示and(与)操作;
将断言分开的分号(;)表示or(或)操作。 - 断言表达式合法的语法形式:
1)原子true
2)其他常量,这些在断言表达式中都会被求值为false
3)断言谓词或者断言BIF
4)比较表达式
5)算数表达式
6)布尔表达式
7)短路布尔表达式
下面我用三种方法来写一个求面积程序,
when
when_area({Type,R})
when Type==circle ->3.14*R*R;
when_area({Type,R})
when Type==square -> R*R.
%%%下面是命令行执行
16> test:when_area({circle,2}).
12.56
if
%% 1.if Condition -> ; Condition -> ;
%% 跟其他语言不同的是, 不用谢else if, 最后的else 用true 来匹配到~
%%2. 跟when语法比较
%% when 不是写在函数里面,而是需要写多次函数定义
%% 大概还有其他不同, 大神看过求指点~
if_area(Sharp) ->
{Type,R} = Sharp,
if Type==circle->3.14*R*R;
Type==square -> R*R;
true ->0
end.
%%%下面是命令行执行
12> test:if_area({circle,2}).
12.56
13> test:if_area({rect,2}).
0
case
%%case 跟其他语言的switch 差不多
%%跟if比较
%%不一样的就是, case可以方便的匹配不同类型参数, 但是case并不使用"断言"
case_area(Sharp) ->
case Sharp of
{circle, R} -> 3.14*R*R;
{square, Side} -> Side*Side;
{rect, Width,Height} -> Width*Height
end.
%%%下面是命令行执行
1> test:case_area({circle,2}).
12.56
2> test:case_area({square,2}).
4
4> test:case_area({rect,2,3}).
6
因为书上很多东西也没讲清楚
所以这次有部分从这里借鉴来的
http://blog.youkuaiyun.com/cntway/article/details/7747192