首页 > 代码库 > 《erlang程序设计》第三章基本概念学习
《erlang程序设计》第三章基本概念学习
变量
变量必须以大写字母开头。在erlang里,变量就像数学里的那样。当关联一个值与变量时,所下的是一种断言,也就是事实的陈述。这个变量就是那个值,仅此而已。
对X=1234这个简单语句所带有的两种假设。
首先, X不是一个变量,不是你习惯的Java和C等语言里的概念
其次,=不是一个赋值操作符,而是一个模式匹配操作符。
即对于 “Lhs = Rhs”这样一个式子。其先对Rhs求值,再将其结果与左端Lhs进行模式匹对。
在erlang里,变量获得值是一次成功模式匹配的操作结果。
二、 原子
在erlang里,原子被用于表示常量。相当于C语言中的宏定义。原子以小写字母开头,后接一个串字母,数字,下划线(_ )或者@,如果不是以小写字母开头,或是小写字母之外的符号开头,原子可以放在单引号(‘ )内。如‘Monday‘,‘_name‘等。
在某些语言里,单引号和双引号可以互换使用。Erlang里不是这样的。单引号的用法如上面所说,双引号用于给字符串字面量(string literal)定界。
三、 元组
如果想把一些数量固定的项目归组成单一的实体,就会使用元组(tuple)。创建元组的方法是用大括号{}把想要表示的值括起来,并用逗号分隔它们。
为了容易记住元组的用途,一种常用的做法是将原子作为元组的第一个元素,用它来表示元组是什么。这种给元组贴标签的方式不是语言所要求的,而是一种推荐的编程风格。
看看下面的例子,每个语句分别代表了什么意思?为什么有的时候匹配不成功?
1> P = {10 , 5}. %%给变量P绑定一个元组 {10,5} 2> P = { point, 10, 5}. %%再次给P赋值,则是匹配不成功,变量获得值是一次成功模式匹配的操作结果。 ** exception error: no match of right hand side value {point,10,5} 3> P1 = {point, 10, 5}. %%使用令一个变量还绑定元组 {point,10,5} 4> {point1, X, Y} = P1. %%不匹配的原因是因为point1和 point是不同的原子。原子表示的是常量。 ** exception error: no match of right hand side value {point,10,5} 5> {point, X, Y} = P1. %%匹配成功,变量X,Y分别绑定10、5 {point,10,5} 6> X. 10 7> Y. 5 8> X= 20. %%再次给X绑定值则不成功,因为变量X绑定了值了。 ** exception error: no match of right hand side value 20
明白了上面的例子,就简单的理解了在Erlang里变量,原子,元组的基本的概念。
《erlang程序设计》第三章基本概念学习