erlang编译流程:erl文件编译 -> core文件 -> s文件 -> beam文件。
help(). 查看帮助信息
pwd(). 查看当前目录
cd(""). 定位到目标文件
c("文件名"). 编译文件,通过文件名:函数名调用(提前是要export对应的函数名)
注释
- %百分比符号标明注释的开始。
- %%两个符号通常用于注释函数。
- %%%三个符号通常用于注释模块。
变量
所有的变量都必须以大写字母开头,变量只可一次赋值,赋值之后不可再变。f()函数释放shell绑定变量。
三种标点符号
- 整个函数的定义结束时用一个句号".”
- 函数参数,数据构建,顺序语句之间,r用逗号"","分隔
- 函数定义、case 、 if、try..catch 、receive表达式中的模式匹配时,用分号"∵"分界
例如:
恒等
恒等测试符号=:=以及不等测试符号=/=
块表达式
当程序中某处的语法要求只能使用单个表达式但是逻辑上又需要在此使用多个表达式时,就可以使用begin...end块表达式
递归函数例子
erlang数据类型
数值类型整数
- 数值类型整数
- 正数101负数-101
- 十六进制数字16#9A二进制2#1010
- ASCll码查询$9(查询数字9的ASCII码)浮点数
- 正数3.14负数-0.123
- 科学记数法6.23e个-11
浮点数
- 正数3.14
- 负数-0.123
- 科学记数法6.23e个-11
原子类型
- 原子类型就是一个字面量,一个有名字的常量,如: hello.phone_number。
- 原子类型的值如果不以小写字母开头或者该值中间包含除字母数字、下划线、@,之外的其它字符,那么就必须用单引号括起来,如: 'Mobile_phone','empty box'。
- 原子类型的值与变量不同,变量拥有值,而原子类型没有。
元组
元组是一个复合类型,可以包含多个不同类型的元素,元组中也可以嵌套元组,例如:
列表
列表用方括号表示,列表与元组相似,但是元组只能在比较中使用,而列表允许执行的操作更多。一个基本的列表示例如下:
字符串实际上是特殊类型的列表。Erlang不直接支持字符串的概念,但是可以使用常双5亏的值创建字符串值
字符串实际上只是由ASCII字符值组成的列表。因此,上面的字符串存储为由ASCIl字符值组成的列表
在Erlang 中构造一个列表使用 | (管道)操作符,分隔头(列表的开头)和尾,表达方式为[Head | Tai]。头是单一元素,尾是列表的其余部分,例如,可以使用“I”查看部分列表
函数
- 函数不会显示地返回值,函数中最后一条语句的执行结果将作为函数的返回值。
- 同一个函数中,并列的逻辑分支之间,用分号;分界,顺序语句之间,用逗号,分隔。
匿名函数
Erlang中fun就是匿名函数,fun的简单使用,如下例:
多个参数的fun
fun也可以有若干个不同的子句
高价函数
返回fun或者以fun作为参数的函数都称为高阶函数。以fun作为参数,例如:
返回fun函数
一般在返回的函数内部封装了一些变量和逻辑,通常情况下不写返回fun的函数。
映射
映射的语法格式如下:
说明:
- 一个key-value称为一个关联对(association pair)
- 关联对中的key或value称为元素(element)
- 关联对的个数称为映射的size
Erlang内置了丰富的函数来操作map,如下例所示:
输出到终端
Case
If
内置函数
Erlang进程
相比于其它编程语言,Erlang的优势在于它的并发程序设计与分布式程序设计。并发是指一个程序中同时有多个线程在执行。
Erlang的内置函数spawn可以用来创建一个新的进程,语法格式如下:
多进程示例