Kotlin visszatérés, szünet, folytatás Kulcsszavak

1. Áttekintés

Ebben az oktatóanyagban megvitatjuk a strukturális ugrási kifejezések használatát Kotlinban.

Egyszerűen fogalmazva, Kotlin három szerkezeti ugrási kifejezéssel rendelkezik: visszatérés, törés, folytatás. A következő szakaszokban címkével és anélkül is foglalkozunk a funkcióikkal.

2. Címkék Kotlinban

A Kotlinban található bármely kifejezés címkével jelölhető.

Címkét hozunk létre egy azonosító, majd a „@” jel. Például, [e-mail védett], [e-mail védett] érvényes címkék.

Kifejezés felcímkézéséhez egyszerűen hozzáadjuk a címkét előtte:

[e-mail védett] (i in 1..10) {// néhány kód}

3. Az Szünet Nyilatkozat

Címke nélkül, szünet befejezi a legközelebbi záróhurkot.

Nézzünk meg egy példát:

@Test fun givenLoop_whenBreak_thenComplete () {var value = "" for (i in "hello_world") {if (i == '_') break value + = i.toString ()} assertEquals ("hello", value)}

Alternatív megoldásként használhatjuk szünet címkével, amely befejezi az ezzel a címkével jelölt hurkot:

@Test fun givenLoop_whenBreakWithLabel_thenComplete () {var value = "" [email protected] for (i in 'a' .. 'd') {for (j in 1..3) {value + = "" + i + j if (i == 'b' && j == 1) [e-mail védett] _loop}} assertEquals ("a1a2a3b1", érték)}

Ebben az esetben a külső hurok akkor szűnik meg, amikor a én és j változók egyenlőek „b” és „1”.

4. A Folytatni Nyilatkozat

Ezután vessünk egy pillantást a folytatni kulcsszó, amelyet címkével vagy anélkül is használhatunk.

Címke nélkül, folytatni folytatja a záró hurok következő iterációját:

@Teszt móka adottLoop_whenContinue_thenComplete () {var result = "" for (i in "hello_world") {if (i == '_') eredmény folytatása + = i} assertEquals ("helloworld", eredmény)}

Másrészről, amikor használjuk folytatni egy hurkot jelölő címkével folytatja a hurok következő iterációját:

@Teszt móka adottLoop_whenContinueWithLabel_thenComplete () {var result = "" [e-mail védett] a (i in 'a' .. 'c') {for (j in 1..3) {if (i == 'b') [ e-mail védett] _loop eredmény + = "" + i + j}} assertEquals ("a1a2a3c1c2c3", eredmény)}

Ebben a példában használtuk folytatni a címkézett hurok egyik iterációjának kihagyása external_loop.

5. A Visszatérés Nyilatkozat

Címke nélkül azt visszatér a legközelebbi záró vagy anonim függvényhez:

@Teszt móka adottLambda_whenReturn_thenComplete () {var result = returnInLambda (); assertEquals ("hello", eredmény)} private fun returnInLambda (): String {var result = "" "hello_world" .forEach {if (it == '_') visszatérési eredmény + = it.toString ()} // ez a sor nem ér el visszatérési eredményt; }

Visszatérés akkor is hasznos, amikor szeretnénk alkalmaz folytatni logika anonimfunkciók:

@Test fun givenAnonymousFunction_return_thenComplete () {var result = "" hello_world ".forEach (fun (element) {if (element == '_') return result + = element.toString ()}) assertEquals (" helloworld ", result )}

Ebben a példában a Visszatérés nyilatkozat visszatér a névtelen szórakozás hívójához, vagyis a az egyes hurok.

A lambda kifejezés esetében használhatjuk azt is Visszatérés címkével hasonló eredmény elérése érdekében:

@Test fun givenLambda_whenReturnWithExplicitLabel_thenComplete () {var result = "" "hello_world" .forEach [email protected] {if (it == '_') {[email protected]} result + = it.toString ()} assertEquals ("helloworld ", eredmény)}

Alternatív megoldásként azt is megtehetjük Visszatérés implicit címke használatával:

@Test fun givenLambda_whenReturnWithImplicitLabel_thenComplete () {var result = "" "hello_world" .forEach {if (it == '_') {// helyi visszatérés a lambda hívójához, azaz a forEach loop [email protected]} eredmény + = it.toString ()} assertEquals ("helloworld", eredmény)}

A fenti példában a visszatérési nyilatkozat a lambda hívójához is visszatér az egyes hurok.

Végül, Visszatérés címkével használható alkalmaz szünet logika a lambda kifejezésekhezvisszatér egy kinti címkéhez:

@Test fun submittedAnonymousFunction_returnToLabel_thenComplete () {var result = "" run [email protected] {"hello_world" .forEach {if (it = it 'it' = '_') [email védett] eredmény + = it.toString ()}} assertEquals (" szia ", eredmény)}

6. Következtetés

Ebben a cikkben átnéztük a visszatérés, törés, folytatás Kotlinban.

A mintakód megtalálható a GitHubon.