Chinaunix首页 | 论坛 | 博客
  • 博客访问: 527329
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: Delphi

2012-10-11 15:41:37

关于变量:
变量大的特点就是不能变了。Erlang中的变量与我们通常在C/C++或者Java中的变量不一样,用一句话来说就是“变量不变”。即一旦将变量绑定到一个值上,就再也不能绑定到其它值上,而且也不能通过变量修改它所绑定的值。也就是说,你不能写下面的代码

点击(此处)折叠或打开

  1. X = 1.
  2. X = 2.
上面的第二条语句就会出错。因为“变量一旦绑定到一个值上,就不再允许修改”了,由于Erlang不具有直接修改内存的机制,也就是所有的变量现在都不能被修改了。这带来的好处就是,亲爱的C/C++程序员再也不用担心你可爱的变量被别人修改了。

变量需要以大写字母开头,小写字母开始的,那叫原子,这是Erlang的规定。可是原子有什么用呢,可以认为它是一个字面量,它的值就是它本身,与其它值没有什么特殊的关系。这在匹配里面会变得特别重要。

元组是用{}括起来的以逗号分隔的值。列表是用[]括起来的以逗号分隔的值。它们的区别在于元组里面的元素数量可变,可以通过一些指定的操作符进行运算。

Erlang变量类型分为数值型的变量,还有元组与列表,另外,还有处理二进制的那玩意(在后续的文档中将会有介绍)。与一般编程语言不一样,Erlang没有字符串类型,当我们说Erlang中的字符串时,其实说的就是一个整数列表。



等号不是等号:
在Erlang中,"="其实意味着匹配。在写Erlang语句时,当我们写出如

点击(此处)折叠或打开

  1. Var = value.
的表达式时,其实并不是把右边的值赋值给左边,而是先对右边进行才求值,然后对左边进行匹配。这也是我们变量不变的原因。为了能够匹配成功,Erlang有个特点,就是未绑定的变量在进行匹配值时,会绑定到值上去。前面"X=1."语句执行时,X没有绑定,是一个自由变量,它将在匹配操作中绑定到1,但是执行到"X=2."语句时,X已经是一个绑定变量了,这里再进行匹配,就会失败。

我们可以用匹配的方式,对元组或者列表里面的内容进行提取,如

点击(此处)折叠或打开

  1. {X, Y} = {1, 2}.
匹配操作完成之后,X绑定到1,Y绑定到2。可以使用"_"匹配不感兴趣的变量。





阅读(2223) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~