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进行编程,建议通过系统学习专门介绍Erlang的书籍或资料来获得更全面的了解。
Erlang语言开发包 windows版本 安装rabbitmq必备 提供一个便利的途径,官网最新23版本,下载后需要配置环境变量
Erlang的比较运算符 opDescription==等于/=不等于=<小于等于<小于>=大于等于>大于=:=精确的等于=/=精确的不等于等于和精确等于的区别: 如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,=...
### 并发需求下的Scala及Erlang语言的比较与使用 在当今的高并发、大数据处理场景下,选择合适的编程语言对于系统性能至关重要。在众多编程语言中,Scala和Erlang因其强大的并发处理能力和函数式编程特性而受到关注...
在Windows环境下安装RabbitMQ,你需要先安装Erlang环境,因为RabbitMQ是用Erlang编程语言编写的。Erlang是一种面向并发的、函数式的编程语言,特别适合构建高可用、容错性强的分布式系统。文件“otp_win64_22.1.exe...
顺序编程是 Erlang 编程语言的基础,用户可以使用 Erlang Shell 编写和运行顺序编程代码。顺序编程是指按照顺序执行的编程方式,用户可以使用各种运算符号和函数来实现不同的计算任务。 3. 模块和函数 模块和函数...
书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。 这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和...
Erlang语言安装包,RibbitMQ消息服务器支持,20.0 64bit位
### Erlang 中文基础教程:理解Erlang Shell与模块函数 #### 1. Erlang Shell:编程者的交互式环境 Erlang Shell是Erlang编程语言提供的一种交互式编程...掌握这些基础知识,是深入学习Erlang编程语言的重要一步。
Erlang语言安装包,RibbitMQ消息处理所需支持语言,20.0 32bit
erlang windows安装包,官网被墙无法访问,亲测可用.....
【基于Erlang VM的语言】 Erlang虚拟机(Erlang VM,也称为BEAM虚拟机)是Erlang编程语言的核心组成部分,它为Erlang提供了强大的并发特性和故障容错能力。基于Erlang VM的语言充分利用了这些优势,同时也引入了...
ErlPort 是一个Erlang 库,用来帮助连接 Erlang 与其他编程语言。目前支持的是 Python 和 Ruby。Erlang 库使用 Erlang 端口协议 来简化Erlang 语言和 Erlang 外部术语格式 的连接,设置良好的数据类型映射。 ...
erlang语言20.2版本压缩包.zip
Erlang是一种高级编程语言,特别适用于并发、分布式和...了解了这些基础知识后,你可以开始编写Erlang程序,构建自己的并发应用,体验Erlang带来的高效和可靠性。记得在实践中不断探索,Erlang的世界充满了无限可能。