|
1 // For and if clauses can nest without limit in comprehensions. This is |
|
2 // unlike JS 1.8 comprehensions, which can only have one trailing "if" |
|
3 // clause. |
|
4 |
|
5 function* range(start, end) { |
|
6 for (var n = start; n < end; n++) |
|
7 yield n; |
|
8 } |
|
9 |
|
10 function primesBetween6And25() { |
|
11 return [for (n of range(6, 25)) if (n % 2) if (n % 3) if (n % 5) n]; |
|
12 } |
|
13 assertDeepEq(primesBetween6And25(), [7,11,13,17,19,23]); |
|
14 |
|
15 function countUpToEvens(limit) { |
|
16 return [for (n of range(0, limit)) if (!(n % 2)) for (m of range(0, n)) m] |
|
17 } |
|
18 assertDeepEq(countUpToEvens(7), [0,1,0,1,2,3,0,1,2,3,4,5]); |
|
19 |
|
20 reportCompare(null, null, "test"); |