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.