今天看了Erlang程序设计这本书Erlang基础知识部分,记录一下学习到的内容,方便以后回忆学习。
1.变量
Erlang的变量是单一赋值变量,一个变量在释放绑定之前是不能再被新的值绑定。
示例如下:
在这里X = 1,表明X已经绑定了值1,如果再给它绑定新的值2,那么此时会报错。
使用f().函数可以释放绑定值,然后变量可以重新绑定新的值。
示例如下:
如此就可以重新赋值了。
变量赋值时,”=”的右边可以是一个公式。
示例如下:
单一赋值的优势:
在多核编程时,进行共享内存的过程中,单一赋值不会造成内存中值得修改,从而避免了多核编程时数据的不停改变,所以用Erlang来写并发程序时不用进行加锁。
缺点:
不够灵活,每个值占用一个内存会造成开销较大。
注:所有的变量都是以大写字母开头。
2.浮点数
在Erlang中两个整数使用“/”时自动转化为浮点数,div 是用于整数的除法,rem是整数的取余。
样例如下:
3.原子
在Erlang中,原子用来表示不同的费非数字常量值。
Erlang中的原子是全局有效的,而且不需要使用宏定义或者包含文件。
原子是一小写字母开头,后跟数字,字母,下划线,或者邮件符号。
例如:“red”、“red_boy”、 “red_boy1”、“[email protected]”
使用单引号引起的字符也是原子。
例如:’Moday’,’A big boy’
一个原子的值就是原子本身。因此,如果输入的命令只有原子,那么Erlang shell会打印那个原子的值。
样例如下:
4.元组
元组类似于C语言中的结构体,可以存储不同类型的数据在一个“数组”中。
元组是可以嵌套的;
样例如下:
当创建的新的元组引用了一个已经绑定了值的变量时,新的元组会共享这个变量的所引用的数据结构。
样例如下:
注意:如果变量未被绑定那么则不能引用。
从元组中提取数据:
在元组中提取数据我个人感觉是真的麻烦啊!需要将元组赋值给一个新的元组,这个新的元组是由若干部分组成的,这样拆分出来的每一个部分就可以绑定一个新的值,这样就完成了数据的提取工作。
样例如下:
5.列表
列表感觉就像是把元组组合到了一起,可以包含多种类型的数据。列表在形式上与元组的不同在于,元组在嵌套时最外层是{}包裹的,元组是以[]包裹的。
列表存在表头与表尾,一般默认第一个元素是表头,剩下的元素作为表尾。
定义列表:
从列表中提取元素:
6.字符串
严格地讲,Erlang中并没有字符串,字符串实际上就是一个整数列表。用双引号字符括起来就是一个字符串。
注意:在Erlang中字符串必须使用双引号!
7.小结
Erlang语法在一些细节上跟其他语言差距还是很明显的,需要经常写来提高熟练度。
另附一些模式和他们对应的值: