Erlang学习之基本概念

时间:2022-06-01 19:14:51

1.启动和停止erlang shell
启动:al 停止:Ctrl+C或者q(). 立即停止系统:halt().
2.erlang模块里的语法形式不是表达式,不能被shell理解,不能在shell里输入附注(附注是以连字符开头,如:-module)
3.进制计数法:16#2d4(十六进制)等
4.所有变量名都必须以大写字母开头,如果想知道一个变量的值,只需输入变量名(X.)
5.”=”是一次模式匹配操作
<1>”a=b”的意思:计算右侧b的值,然后将结果与左侧a的模式相匹配
<2>变量是模式的一种简单形式。”X=SomeExpression”. erlang会考虑如何才能让这条语句为真(即X与SomeExpression匹配),只有当SomeExpression与X匹配时才为真(当X未赋值时,X的值与SomeExpression相等时才匹配,所以此时相当于赋值;当X赋值后,X的值如果与SomeExpression不相等时,就是语句不匹配,所以会发生错误)
6.当用”/”给两个整数做除法时,结果会自动转换成浮点数。4/2=2.0
使用div和rem可从除法中得到整数结果。N div M :N除以M舍去余数、N rem M:N除以M后的余数。
7.在erlang中,原子被用于表示常量值,原子是全局性的,而且不需要宏定义或包含文件就能实现。原子以小写字母开头,如cat、joe@ricky等,原子还可以放在单引号” ’ ’ “里(这种可以以大写字母开头)。一个原子的值就是它本身。
8.元组
<1>元组类似于C里面的结构体,用”{ }”表示,元组是匿名的,erlang没有类型说明,元组里的字段没有名字。一种常见的做法是将原子作为元组的第一个元素,来表示元组时什么。如:{person,{age,21},{height,1.81}}.
<2>提取元组的值:
i.”“作为占位符,被称为匿名变量,与正规变量不同,同一模式里的多个”“不必绑定相同的值。

1>  Person={person,{name,chuang,wei},{age,21}}.
{person,{name,chuang,wei},{age,21}}
2> {_,{_,O,P},{_,Q}}=Person.
{person,{name,chuang,wei},{age,21}}
3> O.
chuang
4> P.
wei
5> Q.
21

9.列表
<1>列表被用来存放人意数量的事物,用”[ ]”表示,列表里的个元素可以是任何类型。
<2>列表的第一个元素称为列表头,去掉列表头,剩下的就是列表尾。
<3>如果T是一个列表,那么[H|T]也是一个列表,头是H,尾是T。可以给T的开头添加不止一个元素,写法是[E1,E2,…,En|T]。
<4>提取列表元素:对于一个非空列表T,那么表达式[X|Y]=T会提取列表头X,列表尾Y。

8> List=[{a,3},{b,4},{c,5}].
[{a,3},{b,4},{c,5}]
9> [F1|L1]=List.
[{a,3},{b,4},{c,5}]
10> F1.
{a,3}
11> L1.
[{b,4},{c,5}]
12> [F2|L2]=L1.
[{b,4},{c,5}]
13> F2.
{b,4}
14> L2.
[{c,5}]

10.字符串
<1>严格说来,erlang里没有字符串,要在erlang里表示字符串,可以选择一个由整数组成的列表。列表里的整数元素都代表一个Unicode代码点。
<2>可以用字符串字面量来创建这样的列表,其实就是用双引号围起来的一串字符。”hello”就是列表的简写
<3>当列表内的所有整数都代表可打印字符,就会打印成字符串表面量,否则打印成列表。

15> [1,43,3,23].
[1,43,3,23]
16> [1,98,99,100].
[1,98,99,100]
17> [99,100,101].
"cde"
    <4>可以用"$字符"来得到代表某个字符的是哪个整数:
19> $L.
76
20> $o.
111
21> $v.
118
22> $e.
101
23> [76,111,118,101].
"Love"

11.f()命令让shell忘记现有的所有绑定。