有人可以向我解释这行erlang代码的作用吗?
[ReportBody|_] = [Body || {<<"val1">>,<<"val2">>,_,_,Body} <- Parts].
您可以假设Parts变量包含以下内容:
[{<<"val1">>,<<"val2">>,
[{<<"val3">>,
<<"val4">>},
{<<"val5">>,<<"val6">>},
{<<"val7">>,<<"val8">>}],
[{<<"val9">>,
[{<<"val10">>,<<"val11">>},{<<"val12">>,<<"val13">>}]},
{<<"val14">>,<<"val15">>},
{<<"val16">>,[]}],
<<"val17">>}]
我假设代码行的要点是验证'Parts'中是否存在'val1'和'val2'并返回'Body'
但我的假设是正确的,我想详细解释这行代码是如何工作的。我是一个二郎的小伙子,所以要温柔。
答案 0 :(得分:3)
要求Parts
是一个列表
对于此列表的每个元素,检查它是否为五元素元组,其中第一个元素是二进制<<"val1">>
,第二个元素是<<"val2">>
。
如果是,则第五个元素称为Body
并添加到结果列表中。
如果不是,则跳过此元素。
返回包含所有Body
的列表。
(在评论中指出)[ReportBody|_] = ...
部分将ReportBody
绑定到在3处创建的列表的第一个元素,删除其余元素。