Erlang基础
2014-09-05 本文已影响0人
rainoftime
- 终端
- atom
- bool
- turple
- list
- 列表解析
- 模式匹配
- 变量
Erlang终端
打开Erlang终端
原子atom
原子以小写字母开头,后面可以是字母、数字或@。如cat , apple_@to.
另一种表示方法是用单引号括起来,这时原子可包含任意字符
bool
turple
list
列表可以包含多个元素,数目可变
1> Num = [1, 2, 3, 4, 5].
2> Score = [{math, 80}, {english, 90}].
列表的各个元素类型可以不同
3> MyList = [9, appple, {books, math, english}, [3, 4, 5]]
列表操作符"|",用来分割列表的第一个元素和剩下的元素
4> [First | Rest] = [1,2,3,4,5].
[1,2,3,4,5]
5> First.
1
6> Rest.
[2,3,4,5]
变量
变量以大写字母开头,后面可接任意字符
列表解析
应用举例
1. 数据查询
>1 Likes=[{yao, erlang},{wang,java},{qi, php},{yang, c#},{chen,java}]
%查询一:Yao喜欢什么?
>2 [X||{P,X} <- Likes, P=:=yao]
%查询二:谁喜欢Java?
>3 [P||{P, X} <- Likes, X=:=java]
将以上的查询和表达式构造成函数,函数接受输入参数,并将上面的表达式抽象后作为函数体,这样其功能就大大增强了。
2. 定义树及其搜索函数
模式匹配
模式匹配实现多态
-module(area).
-export([area/1]).
%正方形
area({square, Side}) ->
Side*Side;
%圆形
area({circle, Radius}) ->
3.14*Radius*Radius;
%三角形
area({triangle, A, B, C}) ->
S = (A + B + C)/2, math:sqrt(S*(S-A)*(S-B)(S-C));
%其他形状 area(Other) ->
{undifined, Other}.