コトリンリターン、ブレーク、続行キーワード

1概要

このチュートリアルでは、Kotlinでの構造ジャンプ式の使用方法について説明します。

簡単に言えば、** Kotlinには3つの構造ジャンプ式があります。__return、break、continue。

2 Kotlin のラベル

Kotlinのどの式にもラベルを付けることができます。

式にラベルを付けるには、単純にその前にラベルを追加します。

----[email protected]for (i in 1..10) {
   //some code
}
----

3 Break ステートメント

  • ラベルがないと、 break は最も近い囲みループを終了します。

例を見てみましょう。

…… @テスト fun givenLoop whenBreak thenComplete(){     var value = ""     for(i in "hello world"){         if(i == ' ')break         値= i.toString()     }     assertEquals( "hello"、value) } ……

別の方法として、** break をラベルと一緒に使用して、そのラベルでマークされたループを終了することもできます。

…… @テスト fun givenLoop whenBreakWithLabel thenComplete(){     var value = ""    [電子メールで保護]for(iは 'a' .. 'd'){         for(1..3のj){             値= "" i j             if(i == 'b'

この場合、 i 変数と j 変数がそれぞれ「b」と「1」に等しくなったときに外側のループが終了します。

4 __継続ステートメント

次に、 continue キーワードを見てみましょう。ラベルの有無にかかわらず使用できます。

  • ラベルがなければ、 continue は囲んでいるループの次の繰り返しに進みます。

…… @テスト fun givenLoop whenContinue thenComplete(){     var result = ""     for(i in "hello world"){         if(i == ' ')を続ける         結果= i     }     assertEquals( "helloworld"、結果) } ……

一方、ループを示すラベルを付けて continue を使用すると、そのループの次の繰り返しに進みます。

…… @テスト fun givenLoop whenContinueWithLabel thenComplete(){     var result = ""    [メール保護されています]for(i in 'a' .. 'c'){         for(1..3のj){             if(i == 'b')[メール保護]__loop             result = "" i j         }     }     assertEquals( "a1a2a3c1c2c3"、結果) } ……

この例では、 outer loopというラベルのループを1回スキップするために continue を使用しました。

5 リターン ステートメント

ラベルがなければ、それは最も近い包含関数または無名関数に戻ります。

…… @テスト fun givenLambda whenReturn thenComplete(){     var result = returnInLambda();     assertEquals( "hello"、結果) }

プライベートファンreturnInLambda():String {     var result = ""     "hello world" .forEach {         if(it == ' ')の場合は結果を返す         result = it.toString()     }    //この行に到達しません     結果を返します。 } ……

Return は、匿名** 関数に____logicを適用したい場合にも便利です。

…… @テスト fun givenAnonymousFunction return thenComplete(){     var result = ""     "hello world" .forEach(fun(element){         if(element == ' ')を返す         result = element.toString()     )     assertEquals( "helloworld"、結果) } ……

この例では、 return ステートメントは、無名ファンの呼び出し側、つまり forEach ループに戻ります。

  • ラムダ式の場合、ラベル付きの return を使用して** 同様の結果を得ることもできます。

…… @テスト fun givenLambda whenReturnWithExplicitLabel thenComplete(){     var result = ""     "hello world" .forEach[メール保護]{         if(それ== ' '){            [メール保護]        }         result = it.toString()     }     assertEquals( "helloworld"、結果) } ……

あるいは、暗黙のラベルを使って** return することもできます。

…… @テスト fun givenLambda whenReturnWithImplicitLabel thenComplete(){     var result = ""     "hello world" .forEach {         if(それ== ' '){            //ラムダの呼び出し元へのローカルリターン、すなわちforEachループ            [メール保護]        }         結果+ = it.toString()     }     assertEquals( "helloworld"、結果) } ……

上記の例では、returnステートメントはラムダの呼び出し元、つまり forEach ループにも戻ります。

最後に、 return をラベルとともに使用して、 の外側のラベルに戻ることで、 break__ロジックをラムダ式に適用できます。

…… @テスト fun givenAnonymousFunction returnToLabel thenComplete(){     var result = ""    [メール保護]を実行{         "hello world" .forEach {             if(it == ' ')[メール保護]            result = it.toString()         }     }     assertEquals( "hello"、結果) } ……

6. 結論

この記事では、Kotlinの return、break、continue のユースケースについて説明しました。

サンプルコードが見つかりました https://github.com/eugenp/tutorials/tree/master/core-kotlin Github。]