我在 Erlang 中看到了这段代码:
[X-$0 || X<-someFun()]
在那行代码中,我发现-$0
语法非常有用。
我读了一下代码并估计它的意思,但我不是很确定:它是拆分所有数字吗?
我想看到那个语法的解释或man页面,但我找不到。有人可以给我指出正确的页面吗?
我在 Erlang 中看到了这段代码:
[X-$0 || X<-someFun()]
在那行代码中,我发现-$0
语法非常有用。
我读了一下代码并估计它的意思,但我不是很确定:它是拆分所有数字吗?
我想看到那个语法的解释或man页面,但我找不到。有人可以给我指出正确的页面吗?
someFun()
的输出(需要返回一个列表)作为输入,对列表中的每个元素赋值给变量X
,然后从该值中减去字符0
的ASCII值。最终得到的列表就是整个表达式的值。someFun/0
是一个返回只包含数字的字符串的函数,然后将该字符串转换为数字列表。因此,如果someFun()
返回"12345
",则此列表推导式的结果为[1, 2, 3, 4, 5]
。map
函数的概念(如MapReduce),那么现在应该听起来很熟悉了。http://en.wikibooks.org/wiki/Erlang_Programming/List_Comprehensions
Joe Armstrong的书"Programming Erlang",来自Pragmatic Bookshelf,(http://pragprog.com/titles/jaerlang/programming-erlang)也很好地涵盖了列表推导式(以及其他与Erlang相关的内容)。这是一本非常好的书,强烈推荐。
列表推导式的常规文档页面位于Erlang参考手册第6.22节和编程示例第3节。
这两个页面都在主文档页面上(单击左侧菜单栏上的Erlang编程文件夹)。
Erlang文档非常棒 - 只是它的布局有点不太好看...