4

forセイロンにネストされたループがいくつかあるとしましょう。すべてのループから抜け出すにはどうすればよいですか:

variable Integer? something = null;
for (i in 0:3) {
  for (j in 0:3) {
    for (k in 0:3) {
      something = someFunction(i,j,k);
      if (something exists) {
        // break out of everything, we found it
      }
    }
  }
}
4

3 に答える 3

6

それを行う 1 つの方法は、すべてをクロージャーでラップし、すべてから抜け出したいときに return を使用して呼び出すことです。

Integer? doLoops() {
  for (i in 0:3) {
    for (j in 0:3) {
      for (k in 0:3) {
        Integer? something = someFunction(i,j,k);
        if (something exists) {
          return something;
        }
      }
    }
  }
  return null;
}
Integer? something = doLoops();

doLoopsCeylon はクロージャをサポートしているため、が定義されているスコープ内の関数外の他の値を読み書きすることもできます。

于 2016-01-23T18:07:41.623 に答える