何时使用Erlang记录而不是元组?

Str*_*s3D 2 erlang types tuples list record

我什么时候应该使用Erlang记录而不是元组?或者,反之亦然,何时不需要Erlang记录?我对Erlang相对较新,我不确定我是否正确使用记录和元组.我从我读过的内容中了解到,记录实际上是作为元组存储在幕后.

我通常使用记录来处理将在应用程序中传递或在某处持久化的数据.我使用元组之类的东西,比如函数的返回值,函数的参数,以及特定于函数体的东西.

我正确使用记录和元组吗?是否有文档概述何时应该使用另一种类型?

I G*_*ERS 7

这是一个风格问题.但请注意:

  • 大型元组的元组难以正确,您可以轻松交换值.记录命名每个字段使交换不太可能.
  • 您可以轻松地在记录上匹配所有字段的子集.
  • 记录总是需要相同的arity.因此,它们不适合模拟总和类型.
  • 如果在模块之间使用包含语句的大量.hrl文件,则不会在模块上共享记录.这打破了抽象.
  • 记录可以保持模块本地化,以使其他人更难使用记录.这改善了模块化.