English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この記事では、Swiftプログラミングでwhileとrepeat... whileループを作成する方法を学びます。
前の記事では、for-inループ特定の回数を実行するタスクのセットを動かします。この記事では、反復回数が未知の場合にwhileとrepeat..whileをforループの代わりに使用する方法を学びます。-inループの代わりに
whileループは、条件がfalseになるまで一連の文を実行します。未知の反復回数がある場合、この種のループを使用するのが最適です。Swiftはwhileループを2種類提供しています:
このループは、ループの始めに条件を評価します。
whileループの構文は:
while (TestExpression) { // 文 }
TestExpressionは布尔値の表現です。
TestExpressionがtrueと計算された場合、
whileループ内の文が実行されます。
そしてTestExpressionが再び計算されます。
TestExpressionがfalseと計算されるまで、このプロセスを続けます。TestExpressionがfalseと計算された場合、whileループが終了します。
var currentLevel: Int = 0, finalLevel: Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) { //ゲームをプレイする if (gameCompleted) { print("あなたはステージ\(currentLevel)をクリアしました") currentLevel += 1 } } print("whileループの外")
このプログラムを実行するとき、出力は以下のようになります:
あなたはステージ0をクリアしました あなたはステージをクリアしました 1 あなたはステージをクリアしました 2 あなたはステージをクリアしました 3 あなたはステージをクリアしました 4 あなたはステージをクリアしました 5 whileループの外に
上記のプログラムでは、変数currentLevelとfinalLevelが0に初期化され、常量gameCompletedがtrueに初期化されています。
whileループの各反復で、currentLevel <= finalLevelという判断条件をチェックします。条件がtrueを返した場合、whileループ内の文を続行し、そうでない場合、ループを終了します。
反復 | 条件(currentLevel <= finalLevel) | 出力 |
---|---|---|
1 | 0 <= 5 (true) | あなたはステージ0をクリアしました |
2 | 1 <= 5 (true) | あなたはステージをクリアしました 1 |
3 | 2 <= 5 (true) | あなたはステージをクリアしました 2 |
4 | 3 <= 5 (true) | あなたはステージをクリアしました 3 |
5 | 4 <= 5 (true) | あなたはステージをクリアしました 4 |
6 | 5 <= 5 (true) | あなたはステージをクリアしました 5 |
7 | 6 <= 5 (false) | whileループの外に |
このループは、各ループの終わりに条件を評価します。repeat ... whileループはwhileループと似ていますが、一つの重要な違いがあります。testExpression(テスト表現)を計算する前に、repeat ... whileループの主体を実行します。
repeat..whileループの構文は以下の通りです:
repeat { // ステートメント ... } while (testExpression)
repeat ... whileループの主体は一度だけ実行されます(テスト式をチェックする前に)。そうすることで、testExpressionがチェックされます。
testExpressionがtrueと評価された場合、ループ内のステートメントを実行し、その後再度testExpressionを評価します。testExpressionがfalseと評価されるまでこれを繰り返します。
testExpressionがfalseの場合、repeat..whileループは終了します。
var currentLevel: Int = 0, finalLevel: Int = 5 let gameCompleted = true repeat { //ゲームをプレイする if (gameCompleted) { print("あなたはステージ\(currentLevel)をクリアしました") currentLevel += 1 } } while (currentLevel <= finalLevel) print("repeat whileループの外")
このプログラムを実行するとき、出力は以下のようになります:
あなたはステージ0をクリアしました あなたはステージをクリアしました 1 あなたはステージをクリアしました 2 あなたはステージをクリアしました 3 あなたはステージをクリアしました 4 あなたはステージをクリアしました 5 repeat whileループの外
上記の例では、ループ内のステートメントが最初に実行されます。次の反復では、条件 currentLevel <= finalLevel をチェックします。
条件がtrueを返した場合、whileループ内のステートメントを実行し、そうでない場合、ループは終了します。
反復 | 条件 (currentLevel <= finalLevel) | 出力 |
---|---|---|
1 | 0 <= 5 (true) | あなたはステージ0をクリアしました |
2 | 1 <= 5 (true) | あなたはステージをクリアしました 1 |
3 | 2 <= 5 (true) | あなたはステージをクリアしました 2 |
4 | 3 <= 5 (true) | あなたはステージをクリアしました 3 |
5 | 4 <= 5 (true) | あなたはステージをクリアしました 4 |
6 | 5 <= 5 (true) | あなたはステージをクリアしました 5 |
7 | 6 <= 5 (false) | repeat whileループの外 |
repeat と repeat whileループは同じ実行ステップを持っていますが、repeat... whileループでは、条件 currentLevel <= finalLevel はその中のステートメントが実行された後にのみその計算が行われます。
しかし中のwhileでは、currentLevel <= finalLevel 条件が実行される前にチェックされます。
テスト式がfalseに評価されることがない場合、whileの本体とrepeat..whileループが無限に実行されます。
} print("Hello, World!") }
repeat { print("Hello, World!") }
このプログラムを実行するとき、出力は以下のようになります:
Hello, World! Hello, World! . . .
プログラムを実行するとき、二つのループが print("Hello, World!") 语句を無限に実行します。したがって、コントロールタブで連続的な出力が見られます。