erlang之旅(1)

erlang之旅(1)

语句结束用一个句点和换行。

整数采用不定长的整数,没有误差,也会溢出。

变量名必须是大小字母开头。

变量分自由变量和绑定变量,自由变量可以接受任何值,自由变量接受任何值后就变成绑定变量,绑定变量不能再接受任何值。-----(变量不变)。

=为模式匹配符号,而非一般理解上的赋值符号。

单一赋值有益于编写更高质量的代码。

Erlang没有可变状态,也就没有共享内存,更加没有锁,这一切都有益于并行化程序的编写。

 "/"除法永远返回浮点数结果,div返回整数除结果,而rem返回余数。

原子是以小写字母开头,后面跟数字字母或下划线“_”或邮件符号“@”。

原子用来表示不同的非数字常量值。

tuple,元组,是若干个用逗号分隔的值以一对花括弧括起来。

 在”=“的模式匹配中,可以使用符号”_“作为占位符,表示那些我们不关心的值,符号“_”称为匿名变量。

list,列表就是将若干个用逗号分隔的值以一对中括弧括起来。列表的第1个元素称为头head,第1个之后的全部元素称为尾tail。

可以使用模式匹配从列表中提取元素。假设有1个非空列表L,那么表达式[X|Y]=L,可以把列表L的头提取到X,列表的尾提取到Y。

 在Erlang中没有字符串,字符串实际上是一个整数列表。用双引号“”将一串字符括起来就是字符串。

可以用$符号来表示字符的整数值。

命令f()会释放shell中所有绑定过的变量。f()执行后所有变量就又变回自由变量。

模块是erlang代码的基本单元,编写的所有函数都存于模块中,模块存放在以.erl为扩展名的文件中。.erl文件编译后生产.beam文件。(beam=Bogdan's Erlang Abstract Machine)

1个函数可以由多个子句构成,子句之间用分号分隔,最后1个子句以句点为结束符。每个子句都由1个函数头和1和函数体构成,函数头由函数名和随后的以小括号括起来的模式组成,函数体由一系列表达式组成。

 在Erlang的shell中,pwd().查看当前路径,cd("目录"). 更换当前工作目录,c(.erl文件名不带后缀名).编译.erl代码文件为.beam文件。(注意命令最后都有个句点表示结束)

用模块名和函数名精确定位要执行的函数。

在Erlang中会遇到3种标点符号:逗号(,)、句号(.)、分号(;)。

逗号(,):用来分隔函数调用、数据构造器以及模式中的参数。

句号(.):用来在shell中分隔完整的函数和表达式。

分号(;):用来分隔子句,分段的函数定义、case语句、if语句、try...catch语句以及receive表达式。

arity,函数的目就是函数具有的参数数量。在erlang中,如果同一个模块中的2个函数,如果同名但是目不相同,则这2个函数被认为是完全不同的。这2个函数之间除了名字恰巧相同之外,彼此之间再无其他关联。

辅助函数,一般是同名但不同目的函数。

fun就是匿名函数。fun既可以作为函数的参数,也可以作为函数的结果。

erlang是1种函数式的编程语言。

lists,标准库中的一个模块。

lists:map(F,L) 这个函数将fun F应用到列表L中的每一个元素,并返回一个新的列表。

lists:filter(P,L) 这个函数返回一个新列表,新列表由列表L中每一个能满足P(E)为true的元素组成。

像map、filter这样在一个函数调用中处理整个列表的操作称为list-at-a-time操作。

 =:= 恒等测试符号。

如果你的模块恰巧使用了系统模块的名称,那么编译时会得到一个奇怪的消息,告诉你不能从保留目录中加载模块,你只需要重新命名,并删掉之前编译生成的beam文件即可。

猜你喜欢

转载自stephen830.iteye.com/blog/2219412
今日推荐