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 整数取余 比较运算符: == 等于
/= 不等于 =:= 精确等于
=/= 精确不等于
> >= < =<
==和/= 忽略两边的具体数据类型,只比较两边的值。
erlang 基础知识的更多相关文章
- Erlang基础知识集锦
http://wenku.baidu.com/link?url=or-8mkUYUM0uVeqCYESGe93YIlh2IDLP7lFOwRlwr8Syf3PeHbwJC5DPCErs4NFrb1p4 ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- 转:RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- RabbitMQ基础知识详解
什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...
- Erlang基础 -- 介绍 -- 历史及Erlang并发
前言 最近在总结一些Erlang编程语言的基础知识,拟系统的介绍Erlang编程语言,从基础到进阶,然后再做Erlang编程语言有意思的库的分析. 其实,还是希望越来越多的人关注Erlang,使用Er ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- RabbitMQ基础知识(转载)
RabbitMQ基础知识(转载) 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
随机推荐
- Google 镜像站大集合
没有了google的日子是相当难受,下面推荐一些google的镜像站,感谢原文博主的无私奉献,同时也欢迎大家总结科研上的小技巧,心得等来本平台投稿,好东西当然要拿出来共同分享! 以下镜像站分原版和非原 ...
- 详细记录python的range()函数用法
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 这里记 ...
- Xcode使用版本
Xcode6中创建分类.协议等文件的方法 Xcode 5.1.1 与 Xcode 6.0.1 的共存之路 http://jingyan.baidu.com/article/1612d500457df1 ...
- Java 基础-反射
反射-Reflect 测试用到的代码 1.接口 Person.java public interface Person { Boolean isMale = true; void say(); voi ...
- JAVA设计模式之【工厂方法模式】
看例子 1.TV产品接口,负责播放 public interface TV // TV接口 { public void play(); } 2.TV工厂接口,负责生产产品 public interfa ...
- js案例_下滑列表
1.HTML布局(使用ul): <body> <ul> <li class="list" id="lis"> <a h ...
- laravel Event执行顺序
laravel一大特色就是event事件系统.一般首先要listen一个事件,随后fire那个事件,这时执行路径将会调用event handler,返回后继续执行.例如: Event::listen( ...
- 中文web font技术及方案
我们在日常需求中,经常会碰到视觉设计师对某个中文字体效果非常坚持的情况,因为页面是否高大上,字体选择是很重要的一个因素,选择合适的字体可以让页面更优雅.面对这种问题,我们通常以下方式来进行设计还原: ...
- Qt之QHeaderView自定义排序(QSortFilterProxyModel)
简述 对以上节的排序,我们衍伸了两点: 把一个字符串前面的数据按照字符串比较,而后面的数据按照整形比较. 将整形显示为字符串,而排序依然正常呢. 为了分别描述,这里我们先解决问题1. 简述 效果 处理 ...
- 51nod1437 迈克步
傻叉单调栈 #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> ...