サイトアイコン ハジカラ

【Kotlin入門】forの応用編(繰り返しの中断)

こんにちは。

今回は、for文が繰り返される処理の中断を行うロジックを
みていきます。
例えば、for文の中でif文を使って処理を中断することも
できますが、いくつか中断する関数があるので今回はそれを
使っていきます😀

まずは、「continue」を使ってみましょう。
以下のロジックは、for文で、1から10を一つずつセットして
処理をしています。
if文を使用して、条件に一致すれば(余りが0でなければ)、
「continue」を使用して
15行目を飛ばし、5行目に処理を持って行っています。

// 変数xは変更できる変数として宣言。
var x = 10

// 1〜10を一つずつ変数yにセット。
for (y in 1..10) {

// 変数xと変数yの割り算で割り切れない場合はtrue
if ((x % y) != 0) {

println(“割り切れません”)
continue
}

// 割り切れる場合は、変数yを出力
println(y)
}

↓ 実行すると・・・。
  1から10まで実行して、余りがある場合に処理を変えています。

次は、「break」をみてみましょう。
同じく、1から10までセットしますが、「break」が呼ばれた
時点でfor文の処理自体を終了させています。
分かりやすいように、15行目のコメントを足しています。

// 変数xを宣言
val x = 10

// 1〜10を一つずつ変数yにセット。
for (y in 1..10) {

// 変数xと変数yの割り算で割り切れない場合はtrue
if ((x % y) != 0) {

println(“割り切れません”)
break
}

// 割り切れる場合は、変数yを出力
println(y)
}

println(“ーーーー処理終了”)

↓ 実行すると、3で割り切れなくなるので、その時点でfor文を
  抜けています。

次は、「return」をみてみます。
「return」の場合は、呼ばれた時点でその関数内の処理
自体を終了させます。

// 変数xを宣言
val x = 10

// 1〜10を一つずつ変数yにセット。
for (y in 1..10) {

// 変数xと変数yの割り算で割り切れない場合はtrue
if ((x % y) != 0) {

println(“割り切れません”)
return
}

// 割り切れる場合は、変数yを出力
println(y)
}

println(“ーーーー処理終了”)

↓ 実行してみると、18行目のコメントさえ出力されていません。
  「return」が呼ばれた時点で、その関数の処理を終了
  しています👽
  もしこの関数がどこかで呼ばれた関数であれば、
  その呼び出し元の関数に処理を戻します。

最後は、「ラベル」をみてみます。
for文を二つ以上使用する場合、一気にその複数のfor文の処理を
抜ける場合に使います。
以下は、まずラベルを使用していない例です。

for (x in 10..12) {

for (y in 1..10) {

// 変数xと変数yの割り算で割り切れない場合はtrue
if ((x % y) != 0) {

println(“割り切れません”)
break
}

// 割り切れる場合は、変数yを出力
println(y)
}
}

println(“ーーーー処理終了”)

↓ 実行します😄
  1番目のfor文10の場合、2番目のfor文1と2と3
  1番目のfor文11の場合、2番目のfor文1と2
      1番目のfor文12の場合、2番目のfor文1と2と3と4と5
と出力しています。
2番目のfor文は、「break」で処理を終了してますが、
1番目のfor文では処理は継続しています。

では、ラベルを使ってみましょう。
使い方は、for文の前に「***@」と書き、「break」の前に「@***」
と書きます。
「***」は同一名称である必要があります。
これで、「@***」が呼ばれたら、「***@」に処理が移動します✌

loop@for (x in 10..12) {

for (y in 1..10) {

// 変数xと変数yの割り算で割り切れない場合はtrue
if ((x % y) != 0) {

println(“割り切れません”)
break@loop
}

// 割り切れる場合は、変数yを出力
println(y)
}
}

println(“ーーーー処理終了”)

↓ 実行すると、最初に「break」が呼ばれた時点で、
  2番目のfor文だけでなく1番目のfor文も中断させて
  いるのが分かります。

一概に処理を中断すると言っても、その目的や後処理に応じて
使い分けができますね👌

今日はここまで🤚

では、また次回。

 

【Kotlin入門一覧はこちら】

モバイルバージョンを終了