Erlang学习初探-0

在学校时候就开是零碎地接触Erlang,一直苦于没有时间系统学习(现在亦是如此),本人比较懒,学了东西只放在脑袋里,很少做笔记,从这里开始改掉这个坏习惯吧。

作为第0篇,至于Erlang是一门什么样的语言,通常用来做什么就不在此赘述了,下面直入主题。

  • Erlang安装
linux下(我用的是Ubuntu)有的会集成进去Erlang,只要在终端输入erl回车就ok. 如果没有安装可以手动安装,sudo apt-get install erlang,也可以从官网下载二进制包来安装。

windows下可以直接用下载来的安装程序来安装。

  • Erlang启动
Windows命令行或Linux Shell下输入erl就可以了(如果安装了却没有启动,可以加入环境变量)。 启动后看到如下提示符:

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)
列表存储数目可变的东东。书上举这个例子,大概对喜欢购物的MM来说比较不错:

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"

好了,就先说到这里吧,我记得当时开始学的时候也是看到这里就去陪姑娘了,哈哈。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值