欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Erlang入门(二)变量、模式匹配和数据类型

程序员文章站 2022-03-31 23:02:43
...

一、变量和变量不变

变量命名

变量名第一个字母必须是大写,或者以下划线_开始;

变量不变

Erlang的变量只能赋值一次,赋值之后就不能再赋值。


二、模式匹配

在Erlang中,”=”并不表示赋值,而是表示匹配。Erlang总是尽可能的让”=”的结果为true,比如”X = 5“,要使这个表达式为true,就需要把5绑定到X上。

举一些例子:
Erlang入门(二)变量、模式匹配和数据类型


三、运算符

算术运算符:+ - * / div(整除) rem(取余) 
比较运算符:=:= == =/= /= > >= < =< 
逻辑运算符:and andalso or orelse
位运算符:bsl bsr
位逻辑运算符:band bor bxor bnot 



四、数据类型

浮点数

在Erlang中,浮点数就是带小数点的数,而且”/”运算的结果一定是浮点数。

原子

原子是一串以小写字母开头(用于与变量区分),后跟数字字母或下划线的字符。

个人认为可以将这种类型理解成:值为自身且具有唯一标识的”字符串”,类比于Java中HashMap的Key值。

例如:hello的值就是hello

1> hello.
hello

元组

把一些数量固定的项目组合成单一的实体,叫做元组(tuple);
如{name, jack},{apple, red, big, yummy}
元组可以嵌套定义,
如: {apple, {red, big, yummy}}

从元组中获取值

1> People = {jack, 60}.
{jack,60}
2> {jack, Weigh} = People.
{jack,60}
3> Weigh.
60

在第1行中,定义了一个元组,并把它赋值给People;
在第2行中进行模式匹配,jack与jack相匹配,而Weigh与60相匹配,因此Weigh就被赋值为60

列表

列表相当于Java中的List,是一堆不同或相同数据结构的有序集合。
列表的第一个元素称为”头”,剩余元素称为”尾”,可以由[ H | T ]表示,H为头,T为尾;
例如:在列表[1, 2, 3, 4, 5]中,头就是1,尾则是[2, 3, 4, 5];这里的列表也可表示为 [ 1 | [2, 3, 4, 5] ]

从列表中获取值

1> List = [apple, banana, orange].
[apple,banana,orange]
2> [ Fruit1| Fruits ] = List.
[apple,banana,orange]
3> Fruit1.
apple
4> Fruits.
[banana,orange]

在第二行的[ Fruit1| Fruits ]中, Fruit1与List的头匹配,Fruits的尾匹配,进而获取到列表中的元素。

字符串

为什么要把字符串放在列表后讲呢?因为严格来讲,在Erlang中没有字符串这个数据类型,字符串实际上就是一个整数列表。用双引号将一串字符括起来,就是一个字符串,如:

1> "Hello World".
"Hello World"

如果打印列表的时候,列表内所有整数都代表可打印字符,就会自动打印对应的ASCII码表中的字符,如:

1> [83,117,114,112,114,105,115,101].
"Surprise"

但如果列表中存在非可打印字符,则会将数值打印出来,如列表中存在1:

1> [83,117,114,112,114,105,115,101,1].
[83,117,114,112,114,105,115,101,1]

Tips:可以用 $+某个字符表示它对应的值,如:

1> $S.
83