【问题标题】:Erlang, list comprehension syntaxErlang,列表理解语法
【发布时间】:2010-10-06 19:21:43
【问题描述】:

我在 Erlang 中看到了这段代码:

[X-$0 || X<-someFun()]

在那一行中,我发现-$0 语法非常有用。

我阅读了代码并估计了它的含义,但我不太确定:它是否拆分了所有数字?

我想查看该语法的解释或手册页,但找不到。谁能告诉我正确的页面?

【问题讨论】:

    标签: list erlang list-comprehension


    【解决方案1】:

    该代码所做的是从someFun()(需要返回一个列表)获取输出,并且对于列表中的每个元素,它将元素的值分配给变量X,然后减去ASCII值来自该值的字符0。结果列表就是整个表达式的值。

    在实践中(我自己已经编写了数十次此代码)它的作用是假设 someFun/0 是一个函数,它返回一个只有数字的字符串,然后将该字符串转换为一个列表的数字。所以,如果someFun() 返回“12345”,这个列表解析的结果就是[1, 2, 3, 4, 5]

    如果您熟悉 map 函数的概念(如 MapReduce),那么现在听起来应该很熟悉。

    这个 wikibooks 页面看起来像是对 Erlang 列表推导的一个很好的介绍:

    http://en.wikibooks.org/wiki/Erlang_Programming/List_Comprehensions

    Joe Armstrong 的书“Programming Erlang”,来自 Pragmatic Bookshelf,(http://pragprog.com/titles/jaerlang/programming-erlang) 也很好地涵盖了列表推导(以及与 Erlang 相关的所有其他内容)。好书,强烈推荐等。

    【讨论】:

      【解决方案2】:

      列表推导的常规文档页面位于 Erlang Reference Manual 第 6.22 节和 Programming Examples 第 3 节中。

      这两个都在main documentation page 上(单击左侧菜单栏上的 Erlang Programming Folder)。

      Erlang 文档非常棒 - 只是它的布局有点过时...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        • 2023-01-02
        • 1970-01-01
        • 2021-04-07
        • 2016-01-22
        • 2011-12-28
        • 2014-03-29
        相关资源
        最近更新 更多