Erlang语法学习笔记:变量、原子、元组、列表、字符串

一:变量

1. erlang中的变量【单一赋值】,意味着变量只能赋值一次。
2.变量必须【大写字母】开头。

二:原子

原子相当于c++中的枚举类型,但erlang中的原子的值是其本身。

原子是一串以【小写字母】开头的,但如果用单引号引起来,原子的命名就无所谓了,很多花样就出来了。如果首字符是正轨的小写字母,则原子的值是引号内的内容,否则输出的值包含单引号。

三:元组(tuple)

有很多项组成一个单一的实体,类似于c++中的结构体之类的,在erlang中要用元组表示;

将若干个以【逗号】分隔的值用【花括号】括起来就是一个元组。

{rex,1.71} 这个元组包含一个原子和一个浮点值。元组与c++中的结构比起来是匿名的,但erlang中不能以点号来操作,创建一个元组就是直接给一个变量绑定一个元组,因为元组中的元素没有名字,所以只能我们记住这些元素的用处。通常情况下我们用一个原子作为元组的第一个元素来表明这个元组所代表的含义。

{point,10,45}来代替{10,45},这是一种编程风格。

元组可以嵌套。譬如:

代码如下:

Person={person,

{name,rex},

{height,1.72},

{footsize,43},

{eyecolor,brown}}.

表示一组人的信息,注意是使用原子作为标签。

元组声明即自动创建,不再使用就随之销毁,有垃圾回收。

新元组引用了一个已绑定的变量,那就会享有这个变量引用的数据结构。应用没定义的变量会出错!

例子:

代码如下:

F = {firstname,rex}.

L = {lastname,yuan}.

P = {person,F,L}.

p的值就是{person,{firstname,rex},{lastname,yuan}}

=不是赋值,是模式匹配,是erlang的基础。

如果想从元组中提取内容:

声明一个相同类型的元组,要取的值用变量来代替,变量哦!!!然后用=模式匹配去取出来对应变量的值

例如:

代码如下:

Point = {point,10,43}.

{point,X,Y} = Point.

X和Y的值分别就为10,43.

位于等号两边的元组必须含有相同数量的元素,注意模式匹配。如果有复杂的元组想提取内容,可以使用相同结构的模式来提取,需要提取的字段位置必须要用未绑定的变量,切记!!不感兴趣的可以用占位符“_"来替代,其为匿名变量。在同一个模式中的不同地方,占位符绑定的值不必相同。

四:列表

1:将若干个以【逗号】分隔的值用一个【方括号】括起来就是一个列表了,注意和元组的区别。

元组是以花括号,列表是以方括号。

列表中的元素可以有各自不同的类型。例如:[1+2,hello,2-2,{cost,apple,30-20},3]

列表的首元素称为列表的头,剩余的全部为列表的尾(tail),列表的头可以是任何东西,但尾一般还是一个列表。访问列表头的操作非常高效。很多列表处理函数都是对头开始进行处理。

[]是个空列表,[H|T]是以H为头,以T为尾的列表。“|”可以将列表头与尾分隔。最好保证T为正轨列表。添加列表内容一般用前插操作,可以一下插很多个元素。

2:提取列表元素

以模式匹配为基础来提取。

五:字符串

erlang中没有字符串,字符串其实是一个整数列表。

用双引号括起来就是一个字符串。

代码如下:

Name=“Rex”

必须使用双引号。shell打印一串列表值的时候,只有列表中的所有整数都是可打印字符时,才把这个列表当作字符串。有一个不是就不行。

可以用“$"符号来表示字符的整数值,其实就是ASCII码,$s就是115,

注意字符集,确认显示终端和区域设定问题,在这个问题上 erlang没有任何办法解决乱码问题。

(0)

相关推荐

  • Erlang语法学习笔记:变量、原子、元组、列表、字符串

    一:变量 1. erlang中的变量[单一赋值],意味着变量只能赋值一次. 2.变量必须[大写字母]开头. 二:原子 原子相当于c++中的枚举类型,但erlang中的原子的值是其本身. 原子是一串以[小写字母]开头的,但如果用单引号引起来,原子的命名就无所谓了,很多花样就出来了.如果首字符是正轨的小写字母,则原子的值是引号内的内容,否则输出的值包含单引号. 三:元组(tuple) 有很多项组成一个单一的实体,类似于c++中的结构体之类的,在erlang中要用元组表示: 将若干个以[逗号]分隔的值

  • python入门之基础语法学习笔记

    Python 中文编码 Python 文件中如果未指定编码,在执行过程会出现报错: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了. Python 标识符 在 Python 里,标识符由字母.数字.下划线组成. 在 Python 中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. Python 中

  • Python学习笔记之字典,元组,布尔类型和读写文件

    目录 1.字典dict 1.1列表和字典的区别 1.2字典示例 1.3练习:写中国省份与省份缩写对应的字母代码 2.元组tuple 3.布尔类型bool 4.读写文件 4.1用命令做一个编辑器 4.2练习写类似的脚本 4.3用一个target.write()来打印line1.line2.line3 4.4Q&A 1.为什么我们需要给open多赋予一个’w’参数 2.如果你用w模式打开文件,那么你还需要target.truncate()吗 总结 1.字典dict 不同于列表只能用数字获取数据,字典

  • 整理Javascript基础语法学习笔记

    1.什么是变量 字面意思:变量是可变的量: 编程角度:变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品可以是衣服.玩具.水果...等. 2.表达出你的想法(表达式) 表达式与数学中的定义相似,表达式是指具有一定的值.用操作符把常数和变量连接起来的代数式.一个表达式可以包含常数或变量. 字符串表达式:"I" + "love" + "you" + mychar  //编写串表达式,值为字符串. 数值表达式:nu

  • 详解Vue学习笔记进阶篇之列表过渡及其他

    本文将介绍Vue中的列表过渡,动态过渡, 以及可复用过渡是实现. 列表过渡 目前为止,关于过渡我们已经讲到: 单个节点 同一时间渲染多个节点中的一个 那么怎么同时渲染整个列表,比如使用 v-for ?在这种场景中,使用 <transition-group>组件.在我们深入例子之前,先了解关于这个组件的几个特点: 不同于 <transition>, 它会以一个真实元素呈现:默认为一个<span>.你也可以通过 tag 特性更换为其他元素. 内部元素 总是需要 提供唯一的

  • Java的基础语法学习笔记

    零.Java的关键字 用于类和接口的声明:class, extends, implements, interface 包引入和包声明:import, package 数据类型:boolean, byte, char, short, int, long, float, double 某些数据类型的可选值:false, true, null 流程控制:default, return, if, else, for, switch, case, do, while, break, continue, 异

  • javascript基础语法学习笔记

    一.定义 javascript是一门用来增强页面动态效果,实现页面与用户之间的实时.动态交互的脚本语言(解释型编程语言).javascript由三部分组成:ECMA.DOM和BOM [1]ECMAScript由ECMA-262定义,提供核心语言功能(ECMA是欧洲计算机制造商协会) [2]DOM文档对象模型,提供访问和操作网页内容的方法的接口 [3]BOM浏览器对象模型,提供与浏览器交互的方法的接口 二.引入 引入javascript有两种办法:在页面内嵌入js代码和引入外部文件 [1]页面内嵌

  • 亲密接触PHP之PHP语法学习笔记1

    一,PHP脚本代码标记 PHP的脚本是文件中一对特殊标记所包括的内容,如ASP是"<%....%>",PHP可看成是"<?...?>". 然而为了适应XML标准以将PHP嵌入到XML或XHTML中,PHP不建议使用短格式的"<?...?>",而建议使用长格式标记"<?php...?>" 此外PHP代码块还支持 <script language="php"

  • python 正则表达式语法学习笔记

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. 本文重点给大家介绍python 正则

  • javascript学习笔记_浅谈基础语法,类型,变量

    基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或非数字值时,返回true; 3.用isFinity(x),在x不是NaN.Infinity.-Infinity时返回true; 虽然(字符串.数字.布尔值)不是对象,他们的属性是只读的,但也可以像操作对象一样来引用他们的属性和方法,原理: javascript构造一个(String.Number.Boo

随机推荐