Getting Started
去http://www.erlang.org/download.html下载Windows版本的Erlang,将bin目录加入到系统path中
cmd进去输入erl回车,就进入Eshell了,输入q().或者Ctrl+C/Break可以退出Eshell(命令末尾加.然后回车才会执行函数)
在Eshell里输入help().可以看到命令列表(实际上是函数列表)
基于Debian的Linux系统下可以用命令apt-get install erlang来安装Erlang,Mac OSX下可以使用MacPorts来安装
从源代码构建:
CEAN(Comprehensive Erlang Archive Network)是类似于Py的CPAN的东东,也可以选择从CEAN安装Erlang环境
整数
Erlang里允许任意长度的整数
当然Ruby也一样
不可变的变量
Erlang里的变量首字母要求大写
Erlang里的变量像代数里的变量一样只允许赋值一次,可以使用f()函数来forget all variable bindings
赋过值的变量称为bound variable,否则称为unbound variable
“=”在这里不是赋值操作符,而是模式匹配符
在Erlang里一个变量只是一个值的引用,即一个指向存储值的区域的指针,而这个值不能被改变
Erlang里变量不可变最大的好处利于多核编程,因为Erlang不像C或Java,它没有mutable state,所以没有shared memory,没有锁
浮点数
Atom
在Erlang里,Atom用来表示非数字常量,它类似于C或Java里的枚举类型
Atom以小写字母开始,后面接字母、下划线或@符
Atom也可以用单引号括起来,这样就可以使用大写字母开头或带空格等的Atom
Atom有点类似Ruby里的Symbol
Tuple
Tuple用来将一些元素分组,它使用大括号将元素括起来,并用逗号隔开
Tuple类似于C里的structs,但Tuple是匿名的,而且Tuple里的fields没有名字
Tuple里的items可以为任何类型,Tuple可以嵌套
推荐做法是Tuple的第一个元素为一个Atom,这样可以清楚的描述该Tuple
Erlang也是有垃圾回收机制的,不用的内存会自动回收
取Tuple的值:
也可以用匿名变量“_”作为占位符放在不想取值的地方:
List
List用来存放多个元素,它用中括号将元素括起来,并用逗号隔开
List左边第一个元素我们称为head,剩下的元素组成的List称为tail
例如对[1,2,3,4,5],head为1,tail为[2,3,4,5]
如果T为一个List,则[H|T]也是一个List,head为H,tail为T
从List取值的方法:
字符串
Erlang里字符串必需用双引号括起来
Erlang的字符串使用Latin-1(ISO-8859-1)字符集
cmd进去输入erl回车,就进入Eshell了,输入q().或者Ctrl+C/Break可以退出Eshell(命令末尾加.然后回车才会执行函数)
在Eshell里输入help().可以看到命令列表(实际上是函数列表)
基于Debian的Linux系统下可以用命令apt-get install erlang来安装Erlang,Mac OSX下可以使用MacPorts来安装
从源代码构建:
- $ tar -xzf otp_src_R11B-4.tar.gz
- $ cd otp_src_R11B-4
- $ ./configure
- $ make
- $ sudo make install
CEAN(Comprehensive Erlang Archive Network)是类似于Py的CPAN的东东,也可以选择从CEAN安装Erlang环境
整数
Erlang里允许任意长度的整数
- 1> 123456789 * 987654321 * 112233445566778899 * 998877665544332211.
当然Ruby也一样
不可变的变量
Erlang里的变量首字母要求大写
- 1> X = 123456789.
Erlang里的变量像代数里的变量一样只允许赋值一次,可以使用f()函数来forget all variable bindings
赋过值的变量称为bound variable,否则称为unbound variable
“=”在这里不是赋值操作符,而是模式匹配符
在Erlang里一个变量只是一个值的引用,即一个指向存储值的区域的指针,而这个值不能被改变
Erlang里变量不可变最大的好处利于多核编程,因为Erlang不像C或Java,它没有mutable state,所以没有shared memory,没有锁
浮点数
- 1> 5/3.
- 1.66667
- 2> 4/2.
- 2.00000
- 3> 5 div 3.
- 1
- 4> 5 rem 3.
- 2
- 5> 4 div 2.
- 2
- 6> Pi = 3.14159.
- 3.14159
- 7> R = 5.
- 5
- 8> Pi * R * R.
- 78.5397
Atom
在Erlang里,Atom用来表示非数字常量,它类似于C或Java里的枚举类型
Atom以小写字母开始,后面接字母、下划线或@符
Atom也可以用单引号括起来,这样就可以使用大写字母开头或带空格等的Atom
Atom有点类似Ruby里的Symbol
Tuple
Tuple用来将一些元素分组,它使用大括号将元素括起来,并用逗号隔开
Tuple类似于C里的structs,但Tuple是匿名的,而且Tuple里的fields没有名字
Tuple里的items可以为任何类型,Tuple可以嵌套
推荐做法是Tuple的第一个元素为一个Atom,这样可以清楚的描述该Tuple
- 1> Person = {person,
- {name, joe},
- {height, 1.82},
- {footsize, 42},
- {eyecolour, brown}}.
Erlang也是有垃圾回收机制的,不用的内存会自动回收
取Tuple的值:
- 1> Point = {point, 10, 45}.
- {point, 10, 45}
- 2> {point, X, Y} = Point.
- {point, 10, 45}
- 3> X.
- 10
- 4> Y.
- 45
也可以用匿名变量“_”作为占位符放在不想取值的地方:
- 5> {_, _, A} = Point.
- {point, 10, 45}
- 6> A.
- 45
List
List用来存放多个元素,它用中括号将元素括起来,并用逗号隔开
List左边第一个元素我们称为head,剩下的元素组成的List称为tail
例如对[1,2,3,4,5],head为1,tail为[2,3,4,5]
如果T为一个List,则[H|T]也是一个List,head为H,tail为T
从List取值的方法:
- 1> L = [1,2,3,4,5].
- [1,2,3,4,5]
- 2> [A1|Rest] = L.
- [1,2,3,4,5]
- 3> A1.
- 1
- 4> Rest.
- [2,3,4,5]
- 5> [A2,A3|TheRest] = L.
- [1,2,3,4,5]
- 6> A2.
- 1
- 7> A3.
- 2
- 8> TheRest.
- [3,4,5]
字符串
Erlang里字符串必需用双引号括起来
Erlang的字符串使用Latin-1(ISO-8859-1)字符集
莫愁前路无知己,天下无人不识君。