【发布时间】:2017-02-10 17:28:07
【问题描述】:
如果我写简单的话:
[X || X <- [1,2,3,4,5,6,7,8,9,10]].
它返回:
[1,2,3,4,5,6,7,8,9,10]
如果我写:
[{a,b} || {a,b} <- [{1,2},{2,3}]].
返回
[]
简单的问题 - 为什么?
【问题讨论】:
-
虽然下面的答案是正确的,但我想提一下,您可能打算这样做
[{A,B} || {A,B} <- [{1,2},{2,3}]].。 -
符号来自数学,应该以声明的方式阅读。在第二种情况下,如果您将生成器读取为“对于列表中的所有对 {A,B}”,则很清楚为什么会忽略任何不匹配的元素。除了模式之外,您还可以添加更多条件;例如,[... || {A,B} B] 只选择 A 大于 B 的对。
标签: erlang