第一节 基本概念

变量

  在erlang中所有的变量名必须以大写字母开头. 例如:X = 1.在shell中输入X就会得到1.erlang中的变量有一个特点,就是一旦被赋值不可改变.

  例如:X = 1.已经在之前的shell被赋值,再次赋值X = 2.的时候就会报错** exception error: no match of right hand side value 2

  "="在erlang中,变量获得值是一次成功模式匹配操作的结果.别的语言中,=是赋值语句,但是在erlang中,=是一次模式匹配操作.(Lhs = Rhs的真正意思是:计算右侧Rhs的值,然后将结果与左侧Lhs的模式相匹配).

  我们举个例子:

  X = (2+4).
  6
  Y = 10.
  10
  X = 6.
  6
  X = Y.
  这时候就会报错因为X和Y不能匹配.

  为什么erlang要用一次赋值:因为在erlang中变量只不过是对某个值的引用,erlang的实现方式用指针代表绑定变量,指向一个包含值的存储区.这个值不能被修改.

浮点数

  在erlang中,当你用/给两个整数做除法的时候,结果会自动转换成浮点数.

  erlang在内部使用64位的IEEE 754-1985浮点数,因此使用浮点数的程序会存在和C等语言一样的浮点数取整与精度的问题.

原子

  在erlang中,原子被用于表示常量值.在erlang中原子是全局性的,而且不需要宏定义或包含文件就能实现.(原子以小写字母开头,后接一串字母,数字下划线或者@等符号,例如:red,december,[email protected]和a_long_name等).

  原子还可以放在单引号(‘)中.例如:‘Monday‘,‘+‘等.

元组

  创建元组的方法使用大括号把想表达的值括起来,并用逗号分隔它们.例如:P = {10,20}.这就是一个元组

  我们之前说过=看上去像是赋值语句,其实是一个模式匹配操作符.它被用于从数据结构里提取值,控制函数内部的流程,并在并行程序里给进程发消息时,还会用它选择该处理那些消息.

  我们举例看下怎么提取一些值.

  1> Point = {point, 10, 45}.
  {point,10,45}
  2> {point, X, Y} = Point.
  {point,10,45}
  3> X.
  10
  4> Y.
  45

  这样我们就通过模式匹配操作符获到了元组中的值(另外符号_被称为匿名变量.与正规变量不同,同一模式里的多个_不必绑定相同的值.例如{_,{_,Who,_},_} = {person,{name,joe,armstrong},{footsize,42}}. Who的值就是joe)

列表

  列表(list)被用于存放任意数量的事物.创建列表的方法是用中括号把列表元素括起来,并用逗号分隔它们.例如:[1+7,hello,2-2,{cost,apple,30-20},3].列表里面各元素可以是任何类型.

  列表中第一个元素被称为列表头(head).假如把列表头去掉,剩下的就被称为列表尾(tail).访问列表头是一种非常高效的操作,因此基本上所有的列表处理函数都是从提取列表头开始,然后对它做一些操作,接着处理列表尾.

  如果T是一个列表,那么[H|T]也是一个列表,它的头是H,尾是T.竖线(|)把列表的头与尾分隔开.[]是一个空列表.

  6> ThingsToBuy = [{apples,10},{pears,6},{milk,5}].
  [{apples,10},{pears,6},{milk,5}]
  7> ThingsToBuy1 = [{oranges,4},{newspaper,1}|ThingsToBuy].
  [{oranges,4},{newspaper,1},{apples,10},{pears,6},{milk,5}]

  下面从这个列表中提取我们想要的元素,和其他情况一样,我们还是使用模式匹配操作来提取列表中的元素.[X|Y] = L  (X和Y表示未绑定变量).

  8> [Buy1|ThingsToBuy2] = ThingsToBuy1.
  [{oranges,4},{newspaper,1},{apples,10},{pears,6},{milk,5}]
  9> Buy1.
  {oranges,4}
  10> [Buy2,Buy3|ThingsToBuy3] = ThingsToBuy2.
  [{newspaper,1},{apples,10},{pears,6},{milk,5}]
  11> Buy2.
  {newspaper,1}
  12> Buy3.
  {apples,10}
  13> ThingsToBuy3.
  [{pears,6},{milk,5}]

字符串

  严格来说,erlang里没有字符串.要在erlang中表示字符串,可以选择一个由整数组成的列表或者一个二进制型.当字符串表示为一个整数列表时,列表里的每个元素都代表一个Unicode代码点.

  字符串其实是一个整数列表,用双引号括起来的就是一个字符串.

  X = [97,98,99].

  "abc"

  io:format("~w~n",["abc"]).

  [97,98,99]

"="模式匹配符

  1> {X,abc} = {123,abc}.
  {123,abc}
  2> X.
  123
  3> f().
  ok
  4> {X,Y,Z} = {222,def,"cat"}.
  {222,def,"cat"}
  5> X.
  222
  6> Z.
  "cat"

第一节对erlang的基本东西有了一个概念性的理解.如果有错误的地方和要补充的地方,会在后续的学习中慢慢的添加进去.

  

时间: 2024-10-14 00:36:40

第一节 基本概念的相关文章

【计算机网络】第一章第一节 计算机网络的基本概念

第一章第一节 计算机网络的基本概念 第一章概述了计算机网络和因特网,这一章从整体上粗线条地勾画出计算机网络的概貌和全课程的框架 Outline 计算机网络的具体构成描述 协议 Notes ## 计算机网路的具体构成描述  [计算机网络的定义] 计算机网络是 通信技术 与 计算机技术 紧密结合的产物 计算机网络就是 互连的.自治的 计算机集合 自治:无主从关系 互连:互联互通 计算机网络就是一种特殊的通信网络(信源和信宿都是计算机.传输数字化信息) [具体构成] 主机:处在因特网的边缘部分的设备都

CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第一节

原文链接 第一节 CUDA 让你可以一边使用熟悉的编程概念,一边开发可在GPU上运行的软件. Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个国家级的实验室进行大型并行运算的研究,并且是几个新创企业的合伙人.大家可以发邮件到[email protected]与他沟通和交流. 您是否有兴趣在使用高级语言(比如C编程语言)编程时,通过标准多核处理器将性能提升几个数量级?您是否期待拥有跨多个设备的伸缩能力

java的第一节(共12课)课程

[第一课] Linux 简介 课程内容 一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有个基本概念了,这里简单介绍下操作系统在整个计算机系统中的角色. 我们的 Linux 也就是系统调用和内核那两层,当然直观的来看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器,浏览器,电子邮件. 二.Linux 历史简介 操作系统始于二十世纪

辛星跟您玩转vim第一节之vim的下载与三种模式

首先值得一提的是,我的vim教程pdf版本已经写完了,大家可以去下载,这里是csdn的下载地址:点此下载 ,如果左边的下载地址挂掉了,也可以自行在浏览器下面输入如下地址进行下载:http://download.csdn.net/detail/xinguimeng/7714213 ,当然,如果你是百度网盘的忠实用户,也可以借助于百度网盘,我也同步上传到百度网盘了,下载地址如下:百度网盘下载 ,如果地址挂了,可以在浏览器中输入:http://pan.baidu.com/s/1sj9CLXz 来下载.

Linux第一节随笔

Linux第一节: 1.GNU:又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的.它的目标是创建一套完全自由的操作系统.为保证GNU软件可以自由地“使用.复制.修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL).即“反版权”(或称Copyleft)概念.   1.1GNU是“GNU's Not Unix”的递归缩写   1.2GN

第一节 准备工作

第一节 ssm框架的学习准备工作 观看视频 链接:https://pan.baidu.com/s/1FnWsukDeepfsB2QE1k3oIg 提取码:ckxd 1 下载并安装Typora软件 下载路径 链接:https://pan.baidu.com/s/1H7ZS0HhkS0hLry5qmTsotg 提取码:1nz9 目的 :该软件用于打开md格式的文件 安装过程 示范 标题1 标题2 标题3 写程序代码 ``` 然后按回车 <html> <head> <title&g

火云开发课堂 - 《Shader从入门到精通》系列 第一节:Shader介绍与工程搭建

<Shader从入门到精通>系列在线课程 第一节:Shader介绍与工程搭建 视频地址:http://edu.csdn.net/course/detail/1441/22665?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

第一节课作业

1 C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富.表达能力强.使用灵活方便.既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件.其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,无一例外,哪一个不是C语言写的?很多新型的语言如,C++,Java,C#,J#,perl...都是衍生自C语言.掌握了C语言,可以说你就掌握了很多门语言. 学习C程序这门课一年了,这是我们学的第一门专业课,在大学里C语言不