Erlang Maps:替代记录的数据结构
下载需积分: 10 | PDF格式 | 291KB |
更新于2024-07-21
| 192 浏览量 | 举报
"这篇文档是Richard A. O'Keefe在2003年撰写的,探讨了Erlang语言17版后引入Maps的原因,旨在改进Erlang在构建大型系统时的表现。作者提出了一个新的复合数据类型,作为Erlang记录(record)的替代品,这种新类型在存储需求上与记录相同,但不需模块间的文本耦合,对变化更具鲁棒性,并提供完整的运行时字段名称访问,适用于打印和版本变更。文档还附带了一个修订版的dict.erl示例代码,展示这种新数据类型的实际应用。"
Erlang Maps设计原由主要基于以下几个目标:
1. 替代Erlang Records:在Erlang早期版本中,记录(record)被广泛用于结构化数据的表示,但它们存在一些限制,如文本耦合(每个使用记录的模块都需要包含定义记录的头文件),这在大型系统中可能导致维护问题。Maps作为一种新的数据结构,旨在提供更灵活的解决方案。
2. 模块间通信:Maps允许在没有.hrl文件的情况下,作为数据结构在不同模块和进程间传递信息。这减少了对头文件的依赖,简化了代码的组织和管理。
3. 兼容性:Maps提供足够的信息,使得在运行时的打印和解析可以完全兼容源语法。这意味着在调试和日志记录时,Maps的数据可以被准确地解析和显示。
4. 明确区分:Maps被设计成与其他任何数据类型都能可靠地区分开来,这有助于在代码中清晰地识别和处理Maps,避免混淆和错误。
5. 效率:尽管Maps提供了额外的灵活性,但其在有类型信息(例如由TypEr工具推断的类型)的情况下,效率可以与记录相媲美。这意味着在性能敏感的场景下,Maps也可以是高效的选择。
Erlang Maps的引入显著增强了Erlang处理结构化数据的能力,特别是在大型分布式系统中的表现。通过消除模块间的文本耦合,增加了系统的可维护性和可扩展性。同时,Maps的运行时字段访问和对变化的适应性,使得在开发过程中更容易进行版本管理和数据格式转换。附带的dict.erl示例代码则展示了如何在实践中利用这些特性,从而更好地理解和应用Erlang Maps。
相关推荐
kgdkgd130kgdkgd
- 粉丝: 2
- 资源: 15
最新资源
- Star UML指导手册
- FAT32文件系统白皮书(中文)
- 领域驱动模型详细介绍
- Asp.net开发必备51种代码(非常实用)
- 智能手机操作系统简介
- 当前,CORBA、DCOM、RMI等RPC中间件技术已广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性:(1)同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行;(2)客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程都必须正常运行;如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常;(3)点对点通信:客户的一次调用只发送给某个单独的目标对象。
- JSP 《标签啊,标签!》
- UDDI 注册中心介绍
- Thinking in C++, Volume 2, 2nd Edition 英文版 (pdf)
- 完全精通局域网.rar
- mtk的make命令分析
- Essential-MATLAB-for-Engineers-and-Scientists-Third-Edition
- Maven 权威指南 简体中文版
- 深入理解计算体系结构英文版
- AT&T汇编学习资料
- 计算机故障查询手册(非高手用)