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 ...
随机推荐
- 《c程序设计语言》读书笔记--子函数原型和声明的形参
#include <stdio.h> #define Num 20 int power(int base,int n) { int p = 1; int i; for(i = 0;i &l ...
- ssh: Could not resolve hostname gitcafe.com: nodename nor servname provided, or not known
今天 git push 的时候报如下错误: ssh: Could not resolve hostname gitcafe.com: nodename nor servname provided, o ...
- 函数ut_malloc_low
/**********************************************************************//** Allocates memory. @retur ...
- CSS选择符类型
一.标签选择符:针对某一类标签,可以以标签作为选择符 <style type="text/css"> p{color:#F00; font-size:36px;} &l ...
- 用Maven插件生成Mybatis代码
现在代码管理基本上是采用Maven管理,Maven的好处此处不多说,大家用百度搜索会有很多介绍,本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xm ...
- Spring MVC 下index.jsp访问
spring-mvc.xml配置 <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.we ...
- 51nod1086 背包问题 V2
我都快不会写二进制优化多重背包了...卡了一下常数从rank100+到20+... #include<cstdio> #include<cstring> #include< ...
- 解决iis出现这个问题-2147467259 (0x80004005)
在运行中运行下面命令就可解决问题 regsvr32 vbscript.dllregsvr32 jscript.dllregsvr32 %windir%\system32\inetsrv\asp.dll
- fmri分析工具:spm里的统计学 Introduction to SPM statistics
引言 Introduction 需要特别说明,spm是每一个体素为单位,计算统计量,进行t检验. 1.分别在每个体素上做方差分析; 2.对每个体素的方差分析结果,计算t检验统计量; 3.计算等同于t ...
- MySQL内存表-临时表
HEAP表是访问数据速度最快的MySQL表,他使用保存在内存中的散列索引.但如果MySQL或者服务器重新启动,表中数据将会丢失.用法:如论坛的在线人数统计,这种表的数据应该是无关紧要的,就几个简单的字 ...