Erlang 入门

1、变量

所有变量必须以大写字母开头。

如:X

  Y

2、模式匹配

在Erlang中,=表示一个模式匹配操作, Lhs=Rhs实际是对右端求后,将结果与左端求值进行匹配。 其中如果左端为未绑定变量,则完全匹配,并赋值到左端。

3、浮点数

"/"永远返回浮点数, N div M 和 N rem M是用于整数除和取余数。

如:0.32

4、原子

在Erlang中,原子用来表示不同非数字常量值;

原子是以一串以小写字母开头,后跟数字字母或下划线或邮件符号的字符串;使用单引号引起来的字符串也是原子。

如:red、cat、joe@somhost、a_lang_name、'an atom'

 

5、元组(tuple)

将若干个以逗号分割的值用一对花括号括起来,就形成了一个元组。

如:{1,a,3}

  {3,"adsf",2}

  {person,{name,joe}}

创建元组:

   F = {firstName, joe}

       P = {person, F}

取元组中字段值:

       Point = {point, 10, 45}

       取值 10,45可以如下操作

       {point, X,Y} = Point.或者{_,X,Y}

6、列表

 将若干个以逗号分割的值用一对方括号括起来,就形成了一个列表。

如:[{apple,10},{pears,6}]

定义列表:

如果T是一个列表,那么[H|T]也是一列表。

竖线符号(|)可以将列表的头和尾分隔开来,面[]表示空列表。

也可以用[[E1,E2,...|T]这种形式向T的起始加入多个元素。并不能从后加入呢。

常用成员函数:

foldl:   %%    foldl(Fun, Acc0, List) -> Acc1
> lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).

Fun的参数为(Elem, AccIn), 其中AccIn 以Acc0初始化,返回值累计值,作为下一次AccIn的输入值。 从左向右。

filter: %%    filter(Pred, List1) -> List2
> lists:filter(fun(X) -> X > 5 end, [1,2,3,4,5,6,7]).
对成员进行过滤, 成员通过函数返回true的,构成一个列表

append: %% append(List1, List2) -> List3

> lists:append("abc", "def").
追加列表,都到一个新列表 。l
ists:append(A, B) 等同 A ++ B.

 

 

 7、字符串

严格意义上,Erlang并没有字符串,字符串实际是一个整数列表。用(")将一串字符括起来就是一个字符串。

如:Name = "Hello".

[83,117,114,112,114,105,115,101].就是"Surprise"

8、记录

记录就是一个提供了基于名字访问成员的元组。

记录的结构如下:

record在原代码文件中定义
-record(person, {name="",phone=[], address}).

定义记录:

在console中的定义

rd(person,{name="",phone=[],address}).

创建记录:

P = #person{phone=[0,3,2,4,5], name="robert"}.

访问字段:

P#person.name.

 更新记录:

P2 = P#person{name="joe"}.

匹配:

#person{name=Name} = P2, Name.

Shell 命令:rr/1  读入文件中的记录

(om@Vaio)5> rr(usr).
[usr]

9、进程词典

每个进程都有一个名叫“进程字典”的本地存储。 如下的BIF用来操作它:(对原值操作时,都会返回旧值)
get() 返回整个进程词典

get(Key) 返回与Key关联的内容(Key 是任意erlang结构), 或者,未找到返回undefined.
put(Key, Value) 把值和键进行关联 .返回与该值关联的旧值

erase() 清空整个词典

erase(Key) 清空指定键

get_keys(Value) 取指定键

10、守护判断

        number(X)       - X is a number
        integer(X)      - X is an integer
        float(X)        - X is a float
        atom(X)         - X is an atom
        tuple(X)        - X is a tuple
        list(X)         - X is a list
       
        length(X) == 3  - X is a list of length 3
        size(X) == 2    - X is a tuple of size 2.
       
        X > Y + Z       - X is > Y + Z
        X == Y          - X is equal to Y
        X =:= Y         - X is exactly equal to Y
                          (i.e. 1 == 1.0 succeeds but
                           1 =:= 1.0 fails)

你可能感兴趣的:(erlang)