码迷,mamicode.com
首页 > 其他好文 > 详细

Erlang 记录与映射组

时间:2015-11-14 16:19:57      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

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

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

何时使用映射组或记录

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

使用记录的场景:

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

使用映射组的场景:

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

通过记录命名元组里的项

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

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

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

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

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

 

Erlang 记录与映射组

标签:

原文地址:http://www.cnblogs.com/mydevops/p/4964363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!