1

チャペルで条件付きのイテレータを書き込もうとしています。これは機能します

var x = [1,4,5,2,6,3];

iter dx(x) {
  for y in x do yield 2*y;
}

for y in dx(x) {
  writeln("y -> ", y);
}

戻る

y -> 2
y -> 8
y -> 10
y -> 4
y -> 12
y -> 6

3 より大きいものだけを返したいとします。これらはどれもコンパイルされません。適切な構文は何ですか?

var x = [1,4,5,2,6,3];

iter dx(x) {
  //for y in x do {if x > 3} yield 2*y;  // Barf
  //for y in x do {if x > 3 yield 2*y }; // Barf
  //for y in x do if x > 3 yield 2*y ;   // Barf
}

for y in dx(x) {
  writeln("y -> ", y);
}
4

1 に答える 1