《Programming Erlang》学习笔记1——数据类型

原创 2007年09月12日 16:06:00

原子(Atom):原子以小写字母开头,可以包含数字、字母以及下划线和“@符号,但不能以下划线开头(如果以下划线开头则作为变量)。原子仅仅是一个名字而已,没有其它意义,不像变量那样包含一个值,它类似于C中的枚举值。原子还可以使用单引号“'来进行定义,在这种定义方式中,原子可以包含任意字符,并且可以以大写字母或下划线开头。原子可以作为函数的一个参数,以进行同名函数不同子句的定义。因此在调用时需要输入原子作为一个参数。

 

整数:Erlang中可以表示任意大小的整数,并且运算也是精确的,因此既不用担心运算溢出,也不用担心字长和变量所能表示的整数大小等等。

 

浮点数:在整数后加一个小数点和至少一位小数位的数称为浮点数。在使用“/进行除法运算时,无论是否整除,其结果会自动转换为浮点数,而如果想进行整数除法和取余,则需要使用“div和“rem操作符。

 

元组(Tuple):包含零个或多个数据的单一数据实体,这些数据可以是以上基本类型也可以是其它元组。元组用大括号“{}括起来并且数据之间以逗号进行分隔。元组类似于C中的“struct,但是没有结构名和其中各个域的域名。因此当创建了元组一段时间后,我们很可能会忘记这个元组是用来表示什么数据的,这时我们可以使用一个技巧来解决这个问题,那就是使用元组的第一个元素来表示这个元组的用途,即可以使用原子来表示。例如我们表示一个二维的点(3, 5)可以这样写:X = {point, 3, 5}.

 

提取(extract)元组中的数据:可以使用“{变量1, 变量2, ...} = {......}.来抽取元组中的数据,其中左边是变量名的元组,右边是想要提取的元组,左右两边的元素个数必须相同,但是左边可以不必全是变量,只要提取需要的元素即可,其它元素只要填写与右边相同的值或下划线“_即可(别忘了“=是模式匹配操作符;“_称为匿名变量,可以同时绑定为不同的值)。一旦操作成功,就可以通过变量使用提取出的值了,而原来的元组不会变化。

 

列表(List):列表用于存储可变数量的数据。列表使用方括号将以逗号分隔的数据括起来创建。列表中的元素可以是任意类型,包括其它列表。

 

列表的头(head)和尾(tail):列表的头就是列表的第一个元素,而列表的尾就是除去头外剩余元素所组成的列表。因此可以看到列表的头可以是任意类型的数据,而列表的尾一定是一个列表!所有的表处理函数都是从抽取列表的头进行处理开始的,处理完后接着处理列表的尾,因为尾是一个列表,所以还是从抽取头进行处理开始,依此类推......

 

列表的定义:除了上述基本定义方式外,列表还有另一种基于已有列表的定义方式:使用“|操作符定义列表。设X是已定义好的列表,如果我们希望定义一个新列表,并且这个新列表是在X基础上的扩展,那我们不必在定义时将X中的元素重写一遍,而只使用“|符即可。定义方法:Y = [新元素1, 新元素2, ... | X],“|前面是新表中特有的元素,可以是任意类型无限多个,而“|后面是旧表X。这样定义好后,新元素就会和旧表中的元素合在一起形成新的表。这样的表称为恰当的(proper)表,如果“|后面不是一个列表,而是其它类型的数据,则生成的表称为不恰当的(improper)表。在“|前,如果一个元素是列表的话,则在新生成的表中它仍是一个列表,而在“|后面的列表在新生成的表中将会被展开,其中的元素作为新表中的元素。

 

提取(extract)列表中的数据:可以使用“[变量1, 变量2, ... | 变量x] = [...]来提取列表中的数据,其中变量12...会被绑定为列表中对应位置的数据,而“|后面的变量x会被绑定为列表中剩余元素组成的列表。如果前面的变量数等于列表中的数据数目,则变量x为空表[],此时可以省略“|和变量x,其它情况下不能省。

 

字符串(Strings):实际上在Erlang中并没有真正意义上的字符串类型,字符串实质上是一个整数的列表。字符串只能使用双引号“""进行定义。另外,因为字符串实质上是列表,所以也可通过列表的方式定义,只要列表中的所有数据全是可打印字符的ASCII码或其它类型的编码(例如汉字编码),那么Erlang Shell在输出时就能将它作为字符串进行输出。例如[65, 66, 67]在输出时就会变为"ABC"。如果想要知道一个字符的ASCII码则可以使用“$符,例如“$A.输出为65

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

原生JS学习笔记1——基本数据类型和运算符

原生JS学习笔记1——基本数据类型和运算符

python 学习笔记1——数据类型、字符串、运算符

最近开始学python,这是一个很强大和便捷的编程语言,日后进行科学计算和科研的时候必然成为主要的编程语言。 本来买了一本python基础教程(第2版),然而教学顺序不太喜欢,因为一开始并没有讲清楚...

c# 本质论学习笔记——(1)数据类型

基本数值类型  整数类型: sbyte byte(8)/ short ushort(16) / int uint(32)/ long ulong(64) [u\l\lu\ul]  浮点类型:f...

HTML5独家分享:原生JS学习笔记1——基本数据类型和运算符

JS介绍   js的历史   在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司。   由于网景公司希望能在静态HTML页面上添加...

《MYSQL入门很简单》学习笔记1——概论,数据类型,操作数据库

原文链接 第1章 数据库概论 一、数据库理论基础 1.数据存储方式 人工管理阶段 文件系统阶段 数据库系统阶段   2.数据库泛型 1NF...

Java学习笔记(1)——基本数据类型

一、进制转换 10^n被称为权  10称为基数   计算机中正数和负数的关系是取反加一, 如: ~3+1=-3 补码边界运算有溢出风险 32位二进制补码最多表示2^32个数, -2G~2G 1,计算机...

MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的区别 图 浮点型:命令

一、CMD中常用mysql相关命令 mysql -D, --database=name  //打开数据库 --delimiter=name  //指定分隔符 -h, --host=nam...

python学习笔记(1)-Python的数据类型:数字

暑假在家无所事事,就翻了几眼Python的书,想记录一下学习历程,也有助于巩固记忆。 Python具有良好的数据类型,以及丰富的内置函数,因此使得Python脚本对数据的处理变得比较简单,大多数情况...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)