Erlang中的基本元素操作-程序员宅基地

技术标签: Erlang  

Erlang shell中,用句号加空格、tab或回车来结束表达式,%表示注释的起点,;隔离子句。模块是.erl 文件,库的头文件.hrl, shell中的编译时c(),外编译命令时erlc, 退出shell用q(),或erlang:halt(). 


变量以大写字母开头,且不能重新绑定变量,只能一次性赋值,具有不可变状态。原子是全局的,不需要宏定义或包含文件,以小写字母开头,还可放在单引号内,是极简表达式。

 

元组(tuple)是一些数量固定的项目归组成单一实体{,}, 由于是匿名的,通常在第一个元素上贴标签,来增加可读性。提取元组中的值使用模式匹配操作符=,_为匿名变量,多个_不必绑定相同的值。但是,_Mode则是常规变量。例如:

2> Family={family,father,mother,son}.

{family,father,mother,son}

3> {_,X,Y,Z}=Family.

{family,father,mother,son}

4> X.

father

5> Y.

mother

6> Z.

Son


记录(record)是元组的另一种形式,可以给元组的各个元素关联一个名称。使用记录的情形:

1)  用一些预先确定且数量固定的原子表示数据

2)  元素数量和元素名称不会随时间改变

3)  大元组中每个元组有相同的结构

采用#myrecord{k1=v1,k2=v2..}来创建record。


列表(list)形如[,,]可以存放任意数量的事物。Head可以是任何事物,Tail通常仍然是个列表。只要用[…|T]构建一个列表,就应确保T是一个列表。同样使用模式匹配来提取列表中的元素。列表推导的常规形式:

[X||Qualifier1,Qualifier2,…]

X是任意一表达式,限定符qualifier可以生成器,位串生成器或过滤器。生成器的写法

Pattern<- ListExpr

反转一个列表时,要调用lists:reverse.

 

Erlang中没有字符串,字符串是个整数列表,”HelloCloud”是一个列表的简写,io:format来指定打印输出。

 

映射组(map)是键值对的关联性集合,内部作为有序计划存储,适用情形:

1)  键不能预知时来表示键值对数据结构

2)  存在大量不同键来表示数据

3)  效率不重要时的万能数据结构

4)  自解释型数据结构

5)  用来表示键值解析树,如xml或配置文件

6)  用Json来通信


映射组的语法:

#{key1 op val1,key2 op val2,…,KeyN op valN}


#后没有名称,op是=>或:=之一。 => 将现有键值更新为新值或给映射组增加一个新键值对。 :=用于更新。 健不能包含任何变量,值可以包含未绑定变量,在模式匹配成功后绑定。


映射组可以通过io:format 里的~p选项输出,并用io:read 或file:consult读取。

Maps:to_json(Map)->Bin 转化为二进制型json

Maps:from_json(bin)-> Nap, 将二进制json转化为map


Json与映射组的对应关系:

1)  Json数字:Erlang的整数或浮点数

2)  Json字符串:Erlang二进制型

3)  Json列表:Erlang列表

4)  true和false 对应

5)  映射组中的健必须是原子,字符串或二进制型,值必须用JSON的数据类型表示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wireless_com/article/details/44081641

智能推荐

【办公自动化】python一键批量给视频添加随机位置水印-程序员宅基地

文章浏览阅读139次,点赞7次,收藏3次。使用了Python的对一个视频文件进行文字水印处理。具体来说,它通过随机选择位置,在视频中添加了一个文字水印。这个文字水印包括了这段文本,并使用了字体(SimSun.ttc),字号为50,颜色为红色。最后会输出一个名为"xxx.mp4"的视频文件。使用场景:随着自媒体的兴起,很多人发布的视频都需要有加水印的需求,但是如果固定到位置,水印很容易就会被处理掉使用python给视频添加水印(位置随机),大大提高处理水印的难度。

react native realm 与 nodejs 版本之间的坑_default.realm: unable to open a realm at path-程序员宅基地

文章浏览阅读2.3k次。现在手上这个android RN项目出现一个问题,这里记录一下,其中package.json文件中配置了realm的版本:"realm": "^1.1.1"。然后用命令行npm install进行安装node_modules的时候,始终安装不起realm,下面的链接是当初出现这个问题的描述。https://ask.csdn.net/questions/716880当时,有人说是把版本降低..._default.realm: unable to open a realm at path

Android中Module的详细使用教程_andrioid module设置-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏10次。本文首先介绍Module是什么,然后再介绍Module的用法、和Module移植导出。首先新手玩家可能会不理解,Module是什么,我从百度摘下来这么一段话:Android Studio中的Module 相当于Eclipse 中的library在使用Android Studio(以下简称AS)新建项目时都会有这样一个概念:Eclipse中的WorkSpace相当于AS中的Proj..._andrioid module设置

电商价格战有望收敛:行业或将整体走向冷静-程序员宅基地

文章浏览阅读380次。电商价格战有望收敛:行业或将整体走向冷静 B2C网上商城k518分类信息网和麦考林已相继公布了2011年财报。与2010年风光上市并全部实现盈利不同,2011年,这两家上市B2C企业双双以亏损收官。对于网商惯用的郴州运动娱乐网价格战问题,业内人士认为,今年的石嘴山水路运输网价格战密度和频次会大幅下降。 现状 两大上市网商双双报亏 麦考林2011年财报显示,净营业收入为2.18亿美元,相比...

ionic4的ion-reorder-group拖拽排序_ion-virtual-scroll-程序员宅基地

文章浏览阅读371次。1.html代码<ion-reorder-group id=“reorder” [disabled]=“false” (ionItemReorder)='Reorder(event)′><ion−reorder∗ngFor="letitemoftoList;leti=index"><divclass="to−itemcw−flex"[ngClass]="′to−item−first′:i===0"><pclass="to−item−num">0i+1<_ion-virtual-scroll

关于日期时间操作工具类DateUtil(一)-----对java.util.Date 的操作._dateutil 判断两个时间是否为一个自然周-程序员宅基地

文章浏览阅读2.4k次。最近发现我们项目里的对日期时间操作的工具类DateUtil感觉挺好用的,现在就总结一下,便于日后查看。 /** * 利用指定SimpleDateFormat instance转换java.util.Date到String * * @param dt * java.util.Date instance * @param formatter_dateutil 判断两个时间是否为一个自然周

随便推点

欢迎来到云络博客!-程序员宅基地

文章浏览阅读1.7k次。云络博客全新上线啦!在这里我们会介绍云络的业务,而更多的内容是关于我们的运维、云计算、技术、Linux、客户、商务、服务和其他我们觉得比较有趣并且想与您分享的信息。以后,我们可能也会把这分成几个不同主题的博客,诸如商务、技术与工具,以及服务等。 云络联合创始人兼首席执行官,Steve Mushero,将负责博客的大部分内容。有时,特邀作者也将帮忙提供博客内容,包括工程师团队,管理者,销售和_络博客

Oracle、Mysql、SqlServer中插入多条数据_sqlsever inset into 多条-程序员宅基地

文章浏览阅读1.2k次。(1) Oracle中:insert into product (id,names, price, code) select 100,'a',1,1 from dual union select 101,'b',2,2 from dual;这里最好用一次insert,不然效率不高,用多个select. (2)Mysql中:insert into 表名(id,_sqlsever inset into 多条

计算二叉树任意两个节点之间的最短路径长度(Java)_java 求二叉树两个节点最短路径-程序员宅基地

文章浏览阅读5.3k次。题目计算二叉树任意两个节点之间的最短路径长度例如:在这个二叉树中,计算节点7和节点3的最短路径长度输出4(7—4—2—1—3)思路先找出两个节点的最近公共祖先(在上面的例子中,节点7和节点3的最近公共祖先就是节点1)分别求出两个节点到最近公共祖先的路径长度(节点7到节点1的长度为3,节点3到节点1的长度为1)求出两个节点的路径长度(3+1=4)代码package Tests;import java.util.LinkedList;/** * @author zj_java 求二叉树两个节点最短路径

使用MediaPlayer播放音频_mediaplayer播放内置音频-程序员宅基地

文章浏览阅读412次。MediaPlayer类静态构造方法方法名称描述public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder)指定从资源ID对应的资源文件中来装载音乐文件,同时指定了SurfaceHolder对象并返回Me_mediaplayer播放内置音频

例题1 求一元二次方程的根_要求计算一元二次方程ax 2 +bx+c=0(a =0)的根。 主函数中给出3个浮点系数a、b、c,-程序员宅基地

文章浏览阅读557次。例题1 求一元二次方程的根题目描述求一元二次方程ax2+bx+c=0的根,三个系数a, b, c由键盘输入,且a不能为0,且保证b2-4ac>0。程序中所涉及的变量均为double类型。输入以空格分隔的一元二次方程的三个系数,双精度double类型输出分行输出两个根如下(注意末尾的换行):r1=第一个根r2=第二个根结果输出时,宽度占7位,其中小数部分2位。样例输入1..._要求计算一元二次方程ax 2 +bx+c=0(a =0)的根。 主函数中给出3个浮点系数a、b、c,

DY-SV17F语音播放模块应用篇一 【IO独立模式】-程序员宅基地

文章浏览阅读1.3w次,点赞21次,收藏126次。DY-SV17F模块模式分为I/O组合模式和I/O独立模式,每种模式下又有两种方式——按键触发模式和电平触发模式,低电平有效。注:按键触发是指低电平触发后随即释放电平,类似于按键按下后弹起,故称为按键触发。 电平触发是指低电平触发后持续低电平,释放电平后立即停止触发,故称为电平触发。I/O组合模式可以选择播放255首曲目,以8个I/O输出电平的不同组合形式实现;I/O独立模式可以播放8首曲目,分别由8个I/O单独控制。本篇..._sv17f

推荐文章

热门文章

相关标签