【问题标题】:What does this line of erlang code do?这行 erlang 代码有什么作用?
【发布时间】:2013-12-31 20:37:57
【问题描述】:

有人可以向我解释一下这行 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">>}]

我假设这行代码的重点是验证“零件”中是否存在“val1”和“val2”并返回“正文”

但是我的假设是否正确,我想详细解释这行代码是如何工作的。我是一个二郎菜鸟,所以要温柔。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    这是一个list comprehension。它

    1. 要求Parts 是一个列表

    2. 对于这个列表的每个元素,检查它是否是一个五元素元组,其中第一个元素是二进制 &lt;&lt;"val1"&gt;&gt;,第二个元素是 &lt;&lt;"val2"&gt;&gt;

      1. 如果是,则将第五个元素称为Body并添加到结果列表中。

      2. 如果否,则跳过此元素。

    3. 返回包含所有Body的列表。

    4. (在评论中指出)[ReportBody|_] = ... 部分将ReportBody 绑定到在 3 处创建的列表的第一个元素,丢弃其余元素。

    【讨论】:

    • ...然后 [ReportBody|_] = ... 部分将 ReportBody 绑定到结果列表的第一个元素,丢弃其余元素。
    • @RichardC 哎呀,跳过了左边的部分,只是假设有一个变量。你当然是对的。
    猜你喜欢
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2010-11-07
    • 2010-12-12
    • 2011-04-13
    • 2015-07-19
    相关资源
    最近更新 更多