分享好友 编程语言首页 频道列表

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

Erlang  2015-06-30 10:190

一:变量

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没有任何办法解决乱码问题。

查看更多关于【Erlang】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Erlang和Ruby的Socket通讯
server.erl Java代码 -module(server).  -export([start/0,start/1,process/1]).  -define(defPort, 8888).    start() - start(?defPort).    start(Port) -    case gen_tcp:listen(Port, [binary, {packet, 0}, {active, fals

0评论2023-02-09782

github上的Lua in Erlang
https://github.com/rvirding/luerl

0评论2023-02-08449

Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,==操作会首先把两个数字转换成相同的相同类型

0评论2015-11-0948

php实现与erlang的二进制通讯实例解析
这篇文章主要介绍了php实现与erlang的二进制通讯实例解析,需要的朋友可以参考下

0评论2015-09-1795

Erlang中的匹配模式总结
这篇文章主要介绍了Erlang中的匹配模式总结,本文讲解了赋值时匹配、流程控制中的匹配、消息传递匹配等内容,需要的朋友可以参考下

0评论2015-06-3060

Erlang并发编程介绍
这篇文章主要介绍了Erlang并发编程介绍,本文讲解了进程的创建 、进程间通信、超时设置以及给出代码实例,需要的朋友可以参考下

0评论2015-06-30142

ErlangIO编程之文件目录操作常用方法小结
这篇文章主要介绍了Erlang IO编程之文件目录操作常用方法小结,本文讲解了常用的文件操作如打开文件、读取文件、写入文件、删除文件等,需要的朋友可以参考下

0评论2015-06-3062

Erlang中的函数与流程控制介绍
这篇文章主要介绍了Erlang中的函数与流程控制介绍,本文先是讲解了函数的一些知识,然后讲解了case语句和if语句及算术表达式等内容,需要的朋友可以参考下

0评论2015-06-30126

Erlang中3种生成随机数的方法
这篇文章主要介绍了Erlang中3种生成随机数的方法,它们分别是random:uniform()、erlang:now()、crypto:strong_rand_bytes(N),需要的朋友可以参考下

0评论2015-06-30111

Erlang中执行linux命令的两种方法
这篇文章主要介绍了Erlang中执行linux命令的两种方法,本文着重讲解了erlang:open_port的使用,需要的朋友可以参考下

0评论2015-06-30107

Erlang实现的百度云推送Android服务端实例
这篇文章主要介绍了Erlang实现的百度云推送Android服务端实例,本文先是讲解了实现步骤,然后给出实现代码,需要的朋友可以参考下

0评论2015-06-3040

Erlang的一些编程技巧分享
这篇文章主要介绍了Erlang的一些编程技巧分享,本文是是实际编程中的个人总结,需要的朋友可以参考下

0评论2015-06-3090

CentOS6.5源码安装Erlang教程
这篇文章主要介绍了CentOS 6.5源码安装Erlang教程,本文讲解了源码编译安装的过程和遇到的一些错误处理方法,需要的朋友可以参考下

0评论2015-06-30104

Erlang项目内存泄漏分析方法
这篇文章主要介绍了Erlang项目内存泄漏分析方法,本文讲解了分析方法、分析流程并找到问题原因和解决方法,需要的朋友可以参考下

0评论2015-06-30116

Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法
这篇文章主要介绍了Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法,需要的朋友可以参考下

0评论2015-06-3072

Erlang中的注册进程使用实例
这篇文章主要介绍了Erlang中的注册进程使用实例,本文给出正常进程通信实例和使用使用注册进程通信实例,需要的朋友可以参考下

0评论2015-06-30142

Erlang分布式节点中的注册进程使用实例
这篇文章主要介绍了Erlang分布式节点中的注册进程使用实例,本文直接给出实例代码,需要的朋友可以参考下

0评论2015-06-3055

Erlang中的映射组Map详细介绍
这篇文章主要介绍了Erlang中的映射组Map详细介绍,本文讲解了创建映射组、更新映射组、两种操作符的区别、映射的增加、删除、获取等内容,需要的朋友可以参考下

0评论2015-06-3074

Erlang初学:Erlang的一些特点和个人理解总结
这篇文章主要介绍了Erlang初学:Erlang的一些特点和个人理解总结,本文总结了函数式编程、一切都是常量、轻量进程、进程端口映射及典型缺点等内容,需要的朋友可以参考下

0评论2015-06-3076

Erlang中的模块与模式匹配介绍
这篇文章主要介绍了Erlang中的模块与模式匹配介绍,本文分别对模块与模式匹配做了讲解,需要的朋友可以参考下

0评论2015-06-3063

更多推荐