=操作符
=不是一个赋值操作符,它实际上是一个模式匹配操作符。
Erlang的变量只能绑定一次。绑定变量的意思是给变量一个值,一旦这个值被绑定,以后就不能改动了。
变量和原子的语法
请注意Erlang的变量以大写字母开头。所以X、This和A_long_name都是变量。以小写字母
开头的名称(比如monday或friday)不是变量,而是符号常量,它们被称为原子(atom)。
文件服务器
在两台机器之间传输文件
第一台机器上运行的客户端和第二台机器上运行的服务器
Erlang编译器和运行时系统会正确推断出如何在收到消息时运行适当的代码。不需要编写任何的if-then-else或switch语句来设定该做什么。这是模式匹配带来的乐趣之一,会为你节省大量工作。
FileServer = alfile_server:start(“.”)
alfile_server:start(Dir)调用spawn(afile_server, loop, [Dir])。这就创建出一个
新的并行进程来执行函数afile_server:loop(Dir)并返回一个进程标识符,可以用它来与此进
程通信。
已被指派一个值的变量称为绑定变量,否则称为未绑定变量。
浮点数
元组
如果想要表示某人的名字和身高,就可以用{joe, 1.82}。这个元组包含了一个原子和一个浮点数。
要创建一个“坐标点”P = {10,45},创建了一个元组并把它绑定到变量P上。为了更容易记住元组的用途,原子作为元组的第一个元素{point, 10, 45}而不是{10, 45}
创建元组
提取元组
列表
列表(list)被用来存放任意数量的事物
字符串
如果列表内的所有整数都代表可打印字符,它就会将其打印成字符串字面量
模块
模块是Erlang的基本代码单元。模块保存在扩展名为.erl的文件里,而且必须先编译才能运
行模块里的代码。编译后的模块以.beam作为扩展名。
fun
以fun作为参数的函数
返回fun的函数
->() 括号里面的代表函数的返回值
列表推导
创建和更新记录
提取记录字段
在函数里模式匹配记录
映射组
映射组的写法依照以下语法:
#{Key1 Op Val1,Key2 Op Val2,…,KeyN Op ValN}
它的语法与记录相似,但是散列符号(即#)之后没有记录名,而Op是=>或:=这两个符号的其中一个。
在 Erlang 中,映射(Map)是一种键值对的数据结构。您可以在函数中使用模式匹配来操作和处理映射。以下是一个示例:
模式匹配映射组字段
在Erlang代码里,变量D1和D2不会改变它们的初始值。D2的表现就像是对D1做了深层复制①一样。事实上,深层复制并没有发生,Erlang系统只复制了内部结构里的某些必要部分,以形成创建了复制物的假象。