Llo*_*ice 4 erlang records list
我在谷歌和之前的答案中看到了相关问题和解决方案,但它们都让我感到困惑.
假设我有一个记录列表,每个记录都有一个id.说:
-record(blah, {id, data}).
Record2#blah.id = 7
L = [Record1, Record2, ... ]
Run Code Online (Sandbox Code Playgroud)
我正在寻找像get_record(List,ID)这样的函数,它将完整地返回相应的记录,例如:
22> get_record(L, 7).
{blah, id=7, data="ta da!"}
Run Code Online (Sandbox Code Playgroud)
非常感谢,
LRP
一世
在内部,记录是一个元组{Name, v1, v2},所以你的示例记录看起来像{blah, 7, data}一个元组.
考虑到这一点,您可以使用该lists:keyfind/3函数在列表中查找记录:
lists:keyfind(7, #blah.id, L).
Run Code Online (Sandbox Code Playgroud)
这里的第一个参数是ID值,第二个参数是ID字段的元组索引,第三个参数是列表.
该#Name.Field语法允许你可以为任何记录字段的字段索引.
你也可以使用列表理解,比如
[R || R <- Records, R#blah.id == 7]
Run Code Online (Sandbox Code Playgroud)
这将为您提供列表中与id匹配的所有记录.
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |