在学校时候就开是零碎地接触Erlang,一直苦于没有时间系统学习(现在亦是如此),本人比较懒,学了东西只放在脑袋里,很少做笔记,从这里开始改掉这个坏习惯吧。
作为第0篇,至于Erlang是一门什么样的语言,通常用来做什么就不在此赘述了,下面直入主题。
- Erlang安装
windows下可以直接用下载来的安装程序来安装。
- Erlang启动
Eshell V5.8.3 (abort with ^G)
1>
这就代表你可以开始你的Erlang之旅了。
- 开始使用Erlang
输入一个算数表达式,比如:3 + 5. (记得以"."结束),然后回车查看结果,输出结果是8,ok,它完成了一道幼儿园算数题。
来一个字符串,输入任意字符串,如:Hello Erlang. 接下来就会输出这个字符串。
你想说,来一个变量吧,没问题,试一试: PI = 3.141592654. 提醒一下,要以大写字母开头。
你想这样改变这个PI么? like this: PI = 5.123. 看看它告诉你什么:** exception error: no match of right hand side value 5.123
你认为这里“=”是赋值操作符么? 恭喜你,答错了,它表示模式匹配操作, 即对右端求值,然后将结果与左端进行模式匹配。
所以这大概是你要记得的第一条(至少对我来说是如此):变量不可变。
用Armstrong的话来说,Erlang中,变量恢复了它在数学中的涵义。
至于单一赋值有何好处,可以去看看书。
- 原子(atom)和元组(tuple)
Erlang中,原子用来表示不同的非数字常量值。 是不是没明白? 嘿嘿,So do I, 原子是一串一小写字母开头,后跟数字字母或下划线或@的字符,比如:
monday、cat、dog、sun等等。另外,请记得:
'monday' 等同于 monday。
元组的概念类似与C/C++中的struct,我们这样表示元组:
{23, 45}
Erlang没有类型声明,比如我们创建一个三角形,用三条边表示如下:
Triangle = {3, 4, 5}. %% 哈哈,一不小心来了个直角三角形
顺便说下, %来注释, 而%%则会被Emacs识别,自动缩进
不过如果是在终端而非代码文件中输入上面语句,你将会看到这样:
9> Triangle = {3, 4, 5}. %% 直角三角形
{3,4,5}
10> %% 直角三角形
- 列表(List)
ThingsToBuy = [{apples, 10}, {pears, 6}, {milk, 12}].
[]来表示列表,其中元素用逗号隔开,列表中元素可以是不同类型, 比如这样:
[32 + 45, cat, {boys, girls, teachers}, hello].
将得到如下输出:
[77,cat,{boys,girls,teachers},hello]
列表中第一个元素叫做“头”(head), 剩下的无论多少都叫“尾”(tail)。
如何从列表中拿出我们想要的元素呢? 这就要用到模式匹配了,看一下:
[Bought | ThingsToBuy1] = ThingsToBuy.
输出如下:
[{apples,10},{pears,6},{milk,12}]
接下来我们看看Bought是什么:
Bought.
{apples,10}
没错,就是列表的头。
- 字符串
[83, 117, 114, 112, 114, 105, 115, 101].
会输出什么呢?你会感到惊讶么?^_^
"Surprise"
好了,就先说到这里吧,我记得当时开始学的时候也是看到这里就去陪姑娘了,哈哈。