Erlang 记录与映射组

记录其实就是元组的另一种形式。通过使用记录,可以给元组里的各个元素关联一个名称。

映射组是键-值对的关联性集合。键可以是任意的 Erlang 数据类型。

何时使用映射组或记录

记录是元组的另一种形式,因此它们的存储与性能特性和元组一样。映射组比元组占更多的存储空间,查找起来也更慢。另一方面,映射组比元组要灵活得多。

使用记录的场景:

  • 当你可以用一些预先确定且数量固定的原子来表示数据时;
  • 当记录里的元素数量和元素名称不会随时间而改变时;
  • 有一大推元组,并且每个元组都有相同的结果。

使用映射组的场景:

  • 当键不能预先知道时用来表示键-值数据结构;
  • 当存在大量不同的键时用来表示数据;
  • 当方便使用很重要而效率无关紧要时作为万能的数据结构使用;
  • 用作"自解释型"的数据结构,也就是说,用过容易从键名猜出值的含义;
  • 用来表示键-值解析树,例如XML或配置文件;
  • 用 JSON 来和其他编程语言通信。

通过记录命名元组里的项

对于小型元组而言,记住各个元素代表什么几乎不成问题,但当元组包含大量元素时,给各个元素命名就更方便了。一旦命名了这些元素,就可以通过名称来指向它们,而不必记住它们在元组里的具体位置。

用记录声明来命名元组里的元素,语法是:

-record(Name, {
               %% 以下两个键带有默认值
               key1 = Default1,
               key2 = Default2,
               ...
               %% 下一行就相当于 key 3 = undefined
               key3,
               ...
}).

Name 是记录名,key1、key2这些是记录所含各个字段的名称,它们必须是原子,记录里的每个字段都可以带一个默认值,如果创建记录时没有指定某个字段的值,就会使用默认值。

假设想要操作一个代办事项列表。我们首先定义一个todo记录,然后将它保存在一个文件里(记录的定义既可以保存在 Erlang 源代码文件里,也可以保存在拓展名为 .hrl 的文件里,然后包含在 Erlang 源代码文件里)。文件包含是唯一能确保多个 Erlang 模块共享相同记录定义的方式。

时间: 2024-11-10 07:05:15

Erlang 记录与映射组的相关文章

域名配置DNS解析A记录,映射到主机

有很多域名的供应商,随便选,哪个便宜用哪个.godaddy一直支持支付宝,不用visa,虽然它是国外的. 我用的是godaddy,这两年有中文版的了,虽然它有了中文版,但是比以前的英文版还要慢. 进入域名控制面板,点击到下面这个DNS解析的地方修改A记录 在箭头的位置写上你的主机ip,然后等差不多10分钟,访问你的域名,就能跳到你的主机了.我测试是成功的 你按下你的域名的时候,浏览器会把这个请求发到DNS解析服务器上面,DNS解析服务器是一个解释器,它会根据你发过去的域名知道对应的IP,然后就把

python核心编程学习记录之映射和集合类型

字典是python里唯一的映射类型

Erlang 101 Erlang环境和顺序编程 - should done in 2014-10-26

笔记系列 Erlang环境和顺序编程 Erlang并发编程 Erlang分布式编程 Yaws Erlang/OTP 前言 拖了很久很久了,终于快忘的差不多了. Agenda 0 范围 环境 Erlang运行时环境.Emacs开发环境 顺序编程 数据结构 语法 1 Erlang环境搭建 Erlang website http://www.erlang.org/ 实践版本 otp_win32_R16B/erl5.10.1 安装路径记为ERLANG_HOME=D:/erl5.10.1 获取环境变量的方

《Erlang程序设计(第2版)》

<Erlang程序设计(第2版)> 基本信息 作者: (瑞典)Joe Armstrong 译者: 牛化成 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115354570 上架时间:2014-5-27 出版日期:2014 年6月 开本:16开 页码:428 版次:2-1 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计 更多关于>>><Erlang程序设计(第2版)> 编辑推荐 在多核.并发.分布为王的

Erlang 摘要

世界是并行的,Erlang程序反应了我们思考和交流的方式,人作为个体通过发送消息进行交流,如果有人死亡,其他人会注意到.Erlang里的模块类相当于OOPL中的类,进程相当于OOPL里的对象或类实例.并发编程可以用来提升性能,创建可扩展和容错的系统,以及编写清晰和可理解的程序来控制现实世界里的应用. 并发程序是以一种并发编程语言编写的程序,并发编程语言拥有用于编写并发程序的语言结构.Erlang的并发程序是由互相通信的多组顺序进程组成,一个进程就是一个轻量级的虚拟机,可以执行单个的Erlang函

Erlang中的基本元素操作

Erlang shell中,用句号加空格.tab或回车来结束表达式,%表示注释的起点,;隔离子句.模块是.erl 文件,库的头文件.hrl, shell中的编译时c(),外编译命令时erlc, 退出shell用q(),或erlang:halt(). 变量以大写字母开头,且不能重新绑定变量,只能一次性赋值,具有不可变状态. 原子是全局的,不需要宏定义或包含文件,以小写字母开头,还可放在单引号内,是极简表达式. 元组tuple是一些数量固定的项目归组成单一实体{,}, 由于是匿名的,通常在第一个元素

针对群组资源的操作方法、群组服务器

本发明提供了一种针对群组资源的操作方法.群组服务器和执行针对群组资源的操作的装置,通过在发送给成员设备的成员资源操作请求中携带操作请求标识,以便成员资源所属的成员设备根据所述操作请求标识判断成员设备存储的操作请求标识中是否包含所述操作请求标识,并根据判断结果处理成员资源操作请求.从而能够避对成员资源的操作请求进行重复处理或循环处理. 技术领域 [0001]本发明涉及机器通信(Machine-to-Machine Communications, M2M)技术领域,尤其涉及针对群组资源方法.群组服务

erlang 服务器的一些问题(找来的)

添置几个便宜的Linux系统到我的服务器组,OpenPoker可以要多大规模有多大规模.组合一打1U服务器系统可以轻松胜任五十万甚至一百万玩家同时在线.当然不仅仅是纸牌游戏,对于其他多人RPG网游(MMORPG)也是一样的. 我可以指派几个服务器做网关节点,另外几个做数据库节点访问存储介质上的数据,然后剩下的一些做游戏服务器.我还可以限制单台服务器最高接纳五千万家同时在线,所以任何一台当机,最多5千个玩家受影响. 另外要指出的是任何一台游戏服务器当机都不会有数据损毁因为所有Mnesia的数据访问

最大和子数组/最大和子序列

最大和子数组是数组中和最大的子数组,又名最大和子序列.子数组是数组中连续的n个元素,比如a2,a3,a4就是一个长度为3的子数组.顾名思义求最大和子数组就是要求取和最大的子数组. n个元素的数组包含n个长度为1的子数组:{a0},{a1},…{an-1}: n个元素的数组包含n-1个长度为2的子数组:{a0,a1},{a1,a2},{an-2,an-1}: ……………………………………………………………………………………………… n个元素的数组包含1个长度为n的子数组:{a0,a1,…,an-1