erlang 变量存储在哪里_erlang 基础知识

一 数据类型

1. 整数 Integer

Erlang可表示任意大的整数,大整数自动转换成bignums类型,比固定大小的整数类型相对效率较低。

Base#Value 表示基数不是10的整数。如:2#1010 -16#EA

$Character 表示字符的ASCII码。如:$a $\n

2. 浮点数 Float

3. 原子 Atom:表示文字常量

相当于C语言中的#define,Java中的“static final”。

操作:比较

基元:由小写字母开头或由单引号界定。

当以字母开头时:字母,数字,@,句点,下划线_ 都有效。

当以单引号界定时:任意字符有效。

基元按照字典顺序排序。

布尔型

Erlang没有单独的布尔类型。基元true和false与布尔操作符一起使用,但不是布尔类型。

4. 元组 Tuple

元组用来保存一组数据元素的复合数据类型。

使用{}界定,元素由逗号隔开。

当元组的第一个元素是基元(atom)时,称为标记(tag)。

元组的元素索引从1开始。

5. 列表 List :

使用[]界定,元素由逗号隔开。

List的递归定义: List = [Element|List] or []

如果分解后的列表最后一个尾部项是一个空列表,那么这是一个正确的列表或结构良好的列表。

结构不良好的列表在支持需求驱动或延迟(Lazy)编程方面很有用。

列表操作:分解[Head|Tail],列表相加++ ,列表相减-- .

在一个列表前加一个元素,有两种方法:

a). 直接使用构造器,如:[1|[2,3,4]]

b). 使用++运算,如:[1]++[2,3,4]

两种方法比较:++运算效率更低,可能导致程序运行时速度大幅度降低。

字符串:在Erlang中没有字符串类型,实际是字符的整数列表。

基元与字符串的比较:

1. 操作不同:基元只能进行比较操作,字符串进行列表操作。

2. 效率不同:

a) 空间:字符串所占空间与字符串大小成正比。基元在系统表中表示,仅需要几个字节做索引,与它的大小无关。

b) 时间:字符串比较,系统要遍历他们比较字符串的每个字符。基元比较只需比较它们的内部标识符。

3. 可使用字符串表示一个基元,即把字符串当作一个常量。

元组与列表的比较:

处理方式不同:元组只能提取具体元素;列表只要不为空,就可以分成头部和尾部。然后尾部还可以继续分解。

变量:

变量以大写字母开头,后跟字母、数字、下划线。

变量只能绑定一次。

Erlang中所有变量都是局部的,不存在全局变量。

Erlang中所有函数变量调用都是按值调用,不存在引用调用。

Erlang中的变量不需要声明,只需要使用。(Erlang具有动态类型系统。)

Erlang运算符总结:

数学运算符:

/ 浮点除法

div 整数除法

rem 整数取余

比较运算符:

== 等于

/= 不等于

=:= 精确等于

=/= 精确不等于

> >= < =<

==和/= 忽略两边的具体数据类型,只比较两边的值。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值