Erlang基础

2014-09-05  本文已影响0人  rainoftime

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}.

上一篇下一篇

猜你喜欢

热点阅读