Erlang的特点——小结

概要:Erlang的特点,现在发现Erlang几乎都是与从不同。。。

变量不可变:

    保证原子性,为并行化做准备。

元组:

   类似c语言中的结构。

Person = {person,
		      {name,joe},
		      {height,1.82}.
		  }.

列表:

[H|T],这个列表以H为头,以T为尾。竖线符号(|)可以将列表的头和尾分隔开来,而[]则是空列表。   

ThingsToBuy = [{apples,10},{pears,6},{milk,3}].

模式匹配:

     =表示一个模式匹配操作。Lhs=Rhs实际上是这样一个过程,对右端求值(Rhs),然后将结果与左端(Lhs)进行模式匹配。

    38p。

递归:

    一般写法:

total([Head|Tail]) ->
	some_function_of(Head) + total(Tail);
total([]) ->
    0.
   例子:

-module(mylists).
-export([sum/1]).

sum([H|T]) -> H + sum(T);
sum([])    -> 0.       
   过程:

    sum([ 1, 3 ,10])  = 1 + sum( 3, 10)

                                = 1 + 3 + sum([10])

                                = 1 + 3 + 10 + sum([])

                                = 1 + 3 + 10 + 0

                                = 14

 列表解析:

 
 
(Erlang-my@thomescai-G41MT-S2)4> L = [1,2,3,4].
[1,2,3,4]
(Erlang-my@thomescai-G41MT-S2)5> [2*X || X <- L].
[2,4,6,8]
 [F(X) || X <- L] 代表”由F(X)组成的列表,其中X是取值于列表L“。因此,[2*X || X <- L] 意味着”列表L中每个元素X乘以2后的列表“。

算术表达式:

p57。

断言样例:

  断言序列可以是单个断言也可以是一系列用分号(;)分开的断言集合。在断言集合G1;G2;。。。;Gn中,只要任何一个断言为true,那么整个断言序列就为true。

f(X,Y)when is_integer(X), X > Y, Y < 6 -> ...

记录:

    记录就是元组。

Eshell V5.8.3  (abort with ^G)
1> rr("records.hrl").
[todo]
2> X=#todo{}.
#todo{status = reminder,who = joe,text = undefined}
3> X1 = # todo{status=urgent,text="Fix errata in book"}.
#todo{status = urgent,who = joe,text = "Fix errata in book"}
4> X2 = X1#todo{status=done}.
#todo{status = done,who = joe,text = "Fix errata in book"}



你可能感兴趣的:(Erlang的特点——小结)