一、整数运算

  1、Erlang采用不定长的整数来进行整数的算术演算。在Erlang中,整数运算没有误差,因此无需担心运算溢出,也不用为了一个固定字长容纳不下一个大整数而伤脑筋;

二、变量

  1、所有的变量都必须要以大写字母为开头;

  2、在Erlang中,变量恢复了它在数学中的含义。当把一个变量和值关联在一起时,你其实就做出了一项断言,也就是对一个事实的陈述,这个变量的值是多少,仅此而已;

    Erlang中的变量是单一赋值变量。恰如其名,单一赋值变量的值只能一次性地给定。一个变量一旦被赋了值,你想再次改变它,就会得到一个错误。一个变量如果含有一个被赋值的值,就称为绑定变量,否则,则被称为自由变量。一开始,所有的变量都是自由的。

    Erlang中的变量仅是对值的一个引用,就具体实现而言,一个绑定变量就是一个指针,这个指针指向存放那个值的存储区,而那个值是无法改变的;

    用术语来说,我们把可修改的内存区域称为可变状态(mutablestate)。Erlang是一个函数式语言,不存在可变状态。当多核编程来临的时候,采用不可变状态所带来的好处是难以估量的。如果用C,Java这样的传统的编程语言为多核CPU编写程序,就不得不应付共享内存带来的问题。要想不破坏共享内存,就必须在访问时对其加锁。程序还要保证在操纵共享内存时不会崩溃。

  3、定义一个变量的词法单元就是这个变量的作用域。因此,如果在一个函数语句范围内使用X,那么X的值就不能跳出语句之外。在同一个函数的不同字句中,彼此之间也不存在全局或者共享的私有变量。如果X出现在许多不同的函数当中,那么这些X的值也都是各自独立的;

  4、符号_称为匿名变量,与常规变量不同,在同一个模式中的不同地方,各个_所绑定的值不必相同;

三、模式匹配

  1、在大多数语言中,=都表示赋值语句。然而,在Erlang中,=表示一个模式匹配操作。Lhs=Rhs实际上是这样一个过程,对有段求值,然后将结果与左端进行模式匹配。当变量X是一个自由变量时,它的行为与赋值一致(可与任何值进行匹配)。

    只有当=两边的值匹配时,该语句才会成立;

四、浮点数

  1、"/"永远返回读点书,浮点数必须含有小数点且小数点后至少有一位十进制数。当你用"/"来除两个数的时候,其结果会自动转换为浮点数。

  2、div和rem用于整数除和取余数;

五、原子

  1、在Erlang中,原子用来表示表示不同的非数字常量值。原子是一串以小写字母开头,后跟数字字母或下划线(_)或邮件符号(@)的字符。使用单引号引起来的字符也是原子。使用这种形式,我们就能使得原子可以用大写字母作为开头或者包含非数字字符。例如:'Monday'。你还可以将原本不需要使用引号的原子引起来,'a'实际上就等于a。

  2、Erlang中的原子是全局有效的,而且无需使用宏定义或者包含文件;

  3、一个原子的值就等于原子自身。因此,如果输入的命令只有原子,那么Erlang shell会打印那个原子的值;

六、元组

  1、你若想将一定数量的项组成单一的实体,那么就可以使用元组(tuple)。将若干个以逗号分割的值用一对花括号括起来,就形成了一个元组。例如{joe,1.8}。这个元组包括了一个原子和一个浮点值;

  2、元组中的字段没有名字,如:p={10,20}。通常使用一个院子作为元组的第一个元素来标明这个元组所代表的含义。如:{point,10,20};

  3、元组可以嵌套。如:person={person,{name,joe},{height,1.80},{country,china}};

  4、在声明元组时,就自动创建了元组,不再使用它们时,元组也随之销毁。Erlang使用垃圾收集器去回收没有使用的内存,因此我们不用担心内存分配的问题;

  5、如果有一个元组,可以使用相同结构的模式去提取所要的字段值,并且只要在需要提取的字段位置上使用未绑定变量;

七、列表

  1、我们用列表存储数目可变的东西。将若干个以逗号分割的值用一对方括号括起来,就形成了一个列表。如:P=[1,1+2,{l,0}]。列表之中的各个元素可以有各自不同的类型;

  2、如果T是一个列表,那么[H|T]也是一个列表,这个列表以H为头,以T为尾。竖线|可以将列表的头和尾分割开来,而[]则是空列表;

  3、我们可以用模式匹配操作从一个列表中提取元素。假定现在有一个非空的列表L,那么表达式[X|Y]=L(这里的X,Y都是自由变量),可以把列表的头提取到X,将列表的尾提取到Y。

八、字符串

  1、Erlang中并没有字符串,字符串实际上就是一个整数列表。用双引号(")将一个字符括起来就是一个字符串。如:Name = "ssss";但要注意的是,这里的"ssss"仅仅是一个速记形式,实际上它意味着一个整数列表,列表中每一个元素都是相应字符的整数值;shell在打印一串列表值时,只有列表中的所有整数都是可打印字符,它才把这个列表当做字符串来打印;如:[83,117,114,112,114,105,115,101]会打印"Surprise",但是[1,83,117,114,112,114,105,115,101]会打印[1,83,117,114,112,114,105,115,101];

  2、可以使用$符号来表示字符的整数值。例如,$a实际上是一个整数,表示字符a。比如:I=$s会打印出115;[I-32,$u,$r,$p,$r,$i,$s,$e]会打印出"Suprise";

  3、字符串中的字符是Latin-1(ISO-8859-1)编码的字符。如果编码不是Latin-1,可能会出现显示有误的情况;

Erlang-基础篇的更多相关文章

  1. C#多线程之基础篇3

    在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...

  2. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  3. 2000条你应知的WPF小姿势 基础篇<15-21>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...

  4. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

  5. C#多线程之基础篇2

    在上一篇C#多线程之基础篇1中,我们主要讲述了如何创建线程.中止线程.线程等待以及终止线程的相关知识,在本篇中我们继续讲述有关线程的一些知识. 五.确定线程的状态 在这一节中,我们将讲述如何查看一个线 ...

  6. C#多线程之基础篇1

    在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...

  7. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  8. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  9. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  10. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

随机推荐

  1. table_tricks_基于bootstrap

    <!DOCTYPE html><html><head> <title>Bootstrap 实例 - 基本表单</title> <lin ...

  2. 30天,O2O速成攻略【8.22北京站】

    活动概况 时间:2015年8月22日13:30-16:30 地点:车库咖啡(北京市海淀西大街48号鑫鼎宾馆二层) 主办:APICloud.融云.品读者 网址:www.apicloud.com 费用:免 ...

  3. winston日志管理1

    Usage There are two different ways to use winston: directly via the default logger, or by instantiat ...

  4. SQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

  5. java collections读书笔记(8)collection框架总览(1)

  6. ads 错误

    这个问题已经不是第一次碰到了,每次弄周立功的EasyARM2210的时候都会遇见,每次都没有记住.就是要用ADS运行板子配套光盘里面的配套程序的时候会出现: (Fatal)L6002U:Could n ...

  7. Leetcode: Strobogrammatic Number III

    A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...

  8. FOJ 2013 11 月赛

    这套题目还是比较吊的,由于我的沙茶,还是很多没有做出来- -! C:逆序数 D:呵呵 A:妈蛋,自己精度没弄好,想到之前GCC的要加eps,就WA了几次后交Visual C++过了!C(n,m)p^m ...

  9. Java基础(61):Java单步调试(转)

    Eclipse 的单步调试 1.设置断点在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目上. 2.调试(1)点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界 ...

  10. Ejb: remote调用

    用的是wildfly 9.0.2 一:在myeclipse中新建wildfly 9.0.2的server(如何新建去网上搜) 二:修改wildfly server的argument(在run conf ...