以下表达式[y | x <- [1..3], y <- [x..x*2]]
产生答案[1, 2, 2, 3, 4, 3, 4, 5, 6]
。
有人可以解释获得此答案的步骤吗?
答案 0 :(得分:2)
它就像一个foreach循环,所以
foreach (x in [1..3]) {
foreach (y in [x .. x * 2]) {
yield y;
}
}
第一个x为1,所以[1 .. 2]中的y
然后x是2,所以[2 .. 4]中的y
然后x是3,所以[3 .. 6]中的y
将这些结果连接在一起,您将获得最终结果。