4

假设您有以下类型的 Erlang 歌曲记录:

rd(song, {artist, title, album}).
Song = #song{artist = <<"oasis">>, title = <<"wonderwall">>, album = <<"morning glory">>}.

但是您想重新格式化歌曲记录以仅包含艺术家和标题。您将如何删除 Erlang 记录中的字段(在本例中为专辑)?

4

2 回答 2

6

从某种意义上说,你不能因为记录都是在编译时完成的,所以它们并不真正存在。你的#song记录变成了元组{song,Artist,Title,Album}。它是这样定义的。请参阅Erlang - 记录。您需要做的是定义一个新#song记录并手动转换所有歌曲,即创建新元组。请记住,所有数据都是不可变的。

有许多建议来实现更动态的字段对象,但尚未被接受。

阅读 Erlang 文档,它通常非常好。

于 2010-09-19T18:59:39.653 回答
0

如果你真的,真的想从现有的记录元组中删除一个字段,这是可能的。

您可以使用tuple_to_listandlist_to_tuple函数,也许还有#song.title语法来获取字段的索引,将其从列表中删除并转换回元组。

但这可能不是一个好主意。

于 2010-09-20T14:03:41.273 回答