假设您有以下类型的 Erlang 歌曲记录:
rd(song, {artist, title, album}).
Song = #song{artist = <<"oasis">>, title = <<"wonderwall">>, album = <<"morning glory">>}.
但是您想重新格式化歌曲记录以仅包含艺术家和标题。您将如何删除 Erlang 记录中的字段(在本例中为专辑)?
从某种意义上说,你不能因为记录都是在编译时完成的,所以它们并不真正存在。你的#song
记录变成了元组{song,Artist,Title,Album}
。它是这样定义的。请参阅Erlang - 记录。您需要做的是定义一个新#song
记录并手动转换所有歌曲,即创建新元组。请记住,所有数据都是不可变的。
有许多建议来实现更动态的字段对象,但尚未被接受。
阅读 Erlang 文档,它通常非常好。
如果你真的,真的想从现有的记录元组中删除一个字段,这是可能的。
您可以使用tuple_to_list
andlist_to_tuple
函数,也许还有#song.title
语法来获取字段的索引,将其从列表中删除并转换回元组。
但这可能不是一个好主意。