一 数据类型

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 基础知识的更多相关文章

  1. Erlang基础知识集锦

    http://wenku.baidu.com/link?url=or-8mkUYUM0uVeqCYESGe93YIlh2IDLP7lFOwRlwr8Syf3PeHbwJC5DPCErs4NFrb1p4 ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. 转:RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  4. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  5. RabbitMQ基础知识详解

    什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...

  6. Erlang基础 -- 介绍 -- 历史及Erlang并发

    前言 最近在总结一些Erlang编程语言的基础知识,拟系统的介绍Erlang编程语言,从基础到进阶,然后再做Erlang编程语言有意思的库的分析. 其实,还是希望越来越多的人关注Erlang,使用Er ...

  7. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  8. RabbitMQ基础知识(转载)

    RabbitMQ基础知识(转载) 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需 ...

  9. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

随机推荐

  1. Android实现自定义字体

    介绍 最近在看开源项目的时候,发现里面涉及到了自定义字体,虽然自己目前还用不到,但是动手demo笔记记录一下还是有必要的,没准哪天需要到这个功能. 原理 1.其实实现起来非常简单,主要是用到了Type ...

  2. tc srm 636 div2 500

    100的数据直接暴力就行,想多了... ac的代码: #include <iostream> #include <cstdio> #include <cstring> ...

  3. HDU 3863 (博弈) No Gambling

    这是我见过的最简单的一道博弈了,其实不要被复杂的棋盘吓到了. 首先肯定会有而且仅有一个人胜,而且因为棋盘是对称的,所以先手相对于后手肯定更有优势,那么肯定是先手赢. 这是不是严格的推理,但是确实比较容 ...

  4. 15.Object-C--浅谈Foundation框架OC数组NSArray与NSMutableArray

    昨天总结了一下NSString与NSMutableString,今天我在这里总结一下NSArray与NSMutableArray. NSArray数组是:不可变数组. nil 是数组元素结束的标记.O ...

  5. Oracle安装错误ora-00922(zhuan)

    Oracle安装错误ora-00922(缺少或无效选项) (2012-03-19 10:49:27) 转载▼ 标签: 杂谈   安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误, ...

  6. 20160123.CCPP详解体系(0002天)

    程序片段(01):字符.c 内容概要: 转义字符 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdi ...

  7. (C#基础) byte[] 之初始化, 赋值,转换。

    byte[] 之初始化赋值 用for loop 赋值当然是最基本的方法,不过在C#里面还有其他的便捷方法. 1. 创建一个长度为10的byte数组,并且其中每个byte的值为0. byte[] myB ...

  8. Cython:基础教程(1) 语法

    1 变量定义 http://docs.cython.org/src/reference/language_basics.html http://blog.csdn.net/i2cbus/article ...

  9. (一) 从零开始搭建Spark Standalone集群环境搭建

    本文主要讲解spark 环境的搭建 主机配置  4核8线程,主频3.4G,16G内存 虚拟环境: VMWare 虚拟环境系统:Ubuntu 14.10 虚拟机运行环境: jdk-1.7.0_79(64 ...

  10. Spring中@Resource与@Autoware

    问题 这其实就是@Autoware与@Resource没有正确的使用,这个错误是因为wmPoiOplogService这个变量装配方式是@Resource,按照@Resource的按名字查找的方式,并 ...