1、 erlang中,变量不能以小写字符开始的原因,就是erlang中的原子(atom)。原子是常量,唯一的值就是自己的名字,你看到的就是你想得到的--别想得到更多,比如dog,就是dog,你不能操作他,不能改变他,也不能把它分成几部分。小写字母开头的单词只是原子的一种写法,还有其他写法。如下:
38> atom.
atom
39> a.
a
40> 'a'.
a
41> 'a'=a.
a
42> 'Autom'. %大写字母,可以放到‘单引号中
'Autom'
43>
43> atom@erlang.
atom@erlang
44> erlang'atom. %这个是有问题的
44>
注意有些原子是保留字,这些是不能使用的,类似C或java语言的保留字。如:
after ,and ,andalse,band,begin,bnot,bor,bsl,bsr,bxor,case,catch,cond,div,end,fun,if,let,not.of,or.orelse,query,receive,rem,tyr,when.,xor
等
2、 布尔代数和比较操作符
46> true and false. %逻辑与
false
47> false or true. %逻辑或
true
48> true xor false.
true
49> true xor true.
false
50> not false.
true
51> not (true xor false).
false
52>
注意:布尔操作符and 和or对操作符两边的参数都会去求值(这不同于我们常用的语言)。如果想要一个短路操作(只有在必要时,才去求值右边的参数),可以使用andaalso,orelse
52> true andalso true.
true
53> true orelse false.
true
54>
3、相等性测试和不等性测试也很简单,只不过使用的符号和其他语言中稍微有些不同,请注意
在其他语言中,通常使用 == 和 != 来做相等性和不等性比较,
但在Erlang中,使用的是 =:= 和 =/= 来做比较
在做算术计算时,Erlang并不区分浮点和整数,但是在做比较时,却会区分。
如果你不想区分,可以使用== 和 /= 操作符 因此,关键在于是否需要精确的相等性比较。
568> 6=6.
6
69> 6=9. %原子赋值
** exception error: no match of right hand side value 9
70> 5=:=5. %精确比较
true
71> 5=:=5.0.
false
72> 5==5. %数值比较
true
79> 5==5.0.
true
73> 5=/=4. %精确比较
true
74> 5=/=5.
false
75> 5=/=5.0.
true
76> 5/==5.0.
* 1: syntax error before: '='
76> 5/=5.0.
false
77> 5/=5.
false
78>
4、比较操作
80>
80> 1<2.
true
81> 1<1.
false
82> 1>=1.
true
83> 1<=1. %为什么报错呢,因为 这个小于等于不同于其他的语言哟
* 1: syntax error before: '<='
83> 1 <=1.
* 1: syntax error before: '<='
83> 1 <= 1.
* 1: syntax error before: '<='
83> 1 =< 1. %正确的写法,不同于其他语言,小于等于 =<
true
84> 1 =< 2.
true
5、其他补充
输入4+qin会怎么样呢?最好的办法,就是以身试法了。
85> 4+qin.
** exception error: an error occurred when evaluating an arithmetic expression
in operator +/2
called as 4 + qin
然后被结果吓一大跳,看来,Erlang确实不喜欢把他的基本类型用错,仿真器返回一个错误消息,表明它不喜欢出现在+两别的参数。
不过,对于用错类弄,Erlang也并不总是会生气:
94> 0==false.
false
95> 0/=false.
true
96> 0==true.
false
97> 1==true.
false
98> 1<false.
true
99> 1>false.
false
100>
这是怎么了?
尽管Erlang不允许把两个不同类型的操作数加在一起,但却允许他们进行比较。这是因为Erlang的语言发明者 把实现性的优先级排在了前面,觉得如果能简单的写出通用排序算法那样的程序,可以对任何数据排序,岂不是更棒。
以其他语言的了解,是不是还有点蒙圈呢,94行,false应该是0,0==0应该返回true吧。在我们了解的语言中,0代表false,非0代表true; 但注意在Erlang中不是这样的,因为 Erlang中,根本没有true和false,他们都是原子数据类型。
注意在比较
注意在比较中,数据类型之间的大小顺序是:number< atom <reference<fun<port,pid<tuple<list<bit string
引用Erlang语言的发明者 Joe Armstrong的一句话:“具体的顺序并不重要---重要的的定义明确的全局顺序。”
今年是大年初一,准备好好学习一下Erlang的相关知识。如果上面的内容对您有帮助,欢迎打赏一下,下面是我的二维码,请微信扫一扫,因为做IT的大多都是diao si ,多少不限,有心鼓励即可,谢谢!
相关推荐
Erlang基础知识集锦 Erlang基础知识集锦 Erlang基础知识集锦 Erlang基础知识集锦 Erlang基础知识集锦 Erlang基础知识集锦
Erlang语言开发包 windows版本 安装rabbitmq必备 提供一个便利的途径,官网最新23版本,下载后需要配置环境变量
Erlang的比较运算符 opDescription==等于/=不等于=<小于等于<小于>=大于等于>大于=:=精确的等于=/=精确的不等于等于和精确等于的区别: 如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,=...
RabbitMQ消息队列下载安装(Windows版本) rabbitmq-server-3.7.18.exe Erlang语言开发包
erlang 中文基础教程erlang 中文基础教程
Erlang语言安装包,RibbitMQ消息服务器支持,20.0 64bit位
对同为函数式语言的Scala和Erlang进行了比较
erlang windows安装包,官网被墙无法访问,亲测可用.....
书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。 这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和...
Erlang语言安装包,RibbitMQ消息处理所需支持语言,20.0 32bit
基于Erlang VM的语言基于Erlang基于Erlang VM的语言 VM的语言基于Erlang VM的语言
erlang中文基础教程
ErlPort 是一个Erlang 库,用来帮助连接 Erlang 与其他编程语言。目前支持的是 Python 和 Ruby。Erlang 库使用 Erlang 端口协议 来简化Erlang 语言和 Erlang 外部术语格式 的连接,设置良好的数据类型映射。 ...
erlang语言20.2版本压缩包.zip
erlang 语言据说是当今最有前途的程序设计语言,在电信领域得到成功运用,本书讲述了erlang 的语法,程序设计技巧.
Erlang作为一种功能性语言,在实时系统方面非常出色的表现
erlang提供了binary_to_term 函数...这个函数都是c实现的,这里用erlang语言实现了,很有参考价值,其他语言可以参考这个解析erlang二进制协议数据。配套文章地址http://blog.csdn.net/mycwq/article/details/42460033
ierlang, 用于IPython的Erlang语言内核 交互式Erlang笔记本IErlang是用于 IPython的Erlang语言内核。 此外,它允许用户使用IPython的笔记本,除了IPython执行代码,IErlang可以执行erlang代码并编译并执行erlang模块...