Kotlin povratak, razbijanje, nastavak Ključne riječi

1. Pregled

U ovom uputstvu razgovarat ćemo o upotrebi strukturnih izraza za skok u Kotlinu.

Jednostavno rečeno, Kotlin ima tri strukturna izraza skoka: povratak, prekid, nastavak. U sljedećim odjeljcima pokrivat ćemo njihove funkcije s naljepnicom i bez nje.

2. Oznake u Kotlinu

Bilo koji izraz u Kotlinu može se označiti oznakom.

Oznaku izrađujemo pomoću identifikatora iza kojeg slijedi „@” znak. Na primjer, [e-pošta zaštićena], [e-pošta zaštićena] vrijede oznake.

Da bismo označili izraz, jednostavno dodamo oznaku ispred njega:

[zaštićena e-poštom] za (i u 1..10) {// neki kod}

3. The Pauza Izjava

Bez etikete, pauza završava najbližu zatvaračku petlju.

Pogledajmo primjer:

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

Alternativno, možemo koristiti pauza s naljepnicom, koja završava petlju označenu tom naljepnicom:

@Test zabava 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-pošta zaštićena] _loop}} assertEquals ("a1a2a3b1", vrijednost)}

U ovom se slučaju vanjska petlja prekida kada se ja i j varijable jednake "b" odnosno "1".

4. The Nastaviti Izjava

Dalje, pogledajmo nastaviti ključnu riječ, koju također možemo koristiti s naljepnicom ili bez nje.

Bez etikete, nastaviti prijeći će na sljedeću iteraciju zatvorene petlje:

@Test zabava givenLoop_whenContinue_thenComplete () {var result = "" for (i in "hello_world") {if (i == '_') continue result + = i} assertEquals ("helloworld", result)}

S druge strane, kad koristimo nastaviti s naljepnicom koja označava petlju, nastavit će se do sljedeće iteracije te petlje:

@Test zabava givenLoop_whenContinueWithLabel_thenComplete () {var result = "" [email protected] for (i in 'a' .. 'c') {for (j in 1..3) {if (i == 'b') [ e-pošta zaštićena] _loop rezultat + = "" + i + j}} assertEquals ("a1a2a3c1c2c3", rezultat)}

U ovom smo primjeru koristili nastaviti preskočiti jednu iteraciju petlje s oznakom vanjska_petlja.

5. The Povratak Izjava

Bez etikete, to vraća se na najbližu funkciju zatvaranja ili anonimnu funkciju:

@Test zabava givenLambda_whenReturn_thenComplete () {var rezultat = returnInLambda (); assertEquals ("hello", result)} private fun returnInLambda (): String {var result = "" "hello_world" .forEach {if (it == '_') return result result + = it.toString ()} // ovaj redak neće biti postignut povratni rezultat; }

Povratak je korisno i kada to želimo primijeniti nastaviti logika na anonimnimfunkcije:

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

U ovom primjeru, povratak Izjava će se vratiti pozivatelju anonimne zabave, tj za svakoga petlja.

U slučaju lambda izraza, također možemo koristiti povratak s naljepnicom za postizanje sličnog rezultata:

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

Alternativno, možemo i povratak pomoću implicitne oznake:

@Test zabava givenLambda_whenReturnWithImplicitLabel_thenComplete () {var result = "" "hello_world" .forEach {if (it == '_') {// lokalni povratak pozivatelju lambda, tj. ForEach petlja [e-pošta zaštićena]} rezultat + = it.toString ()} assertEquals ("helloworld", rezultat)}

U gornjem primjeru, naredba return također će se vratiti pozivatelju lambda - za svakoga petlja.

Konačno, povratak može se koristiti s oznakom za primijeniti pauza logika za lambda izraze pomoćuvraćanje na etiketu vani:

@Test zabava givenAnonymousFunction_returnToLabel_thenComplete () {var result = "" run [email protected] {"hello_world" .forEach {if (it == '_') [email protected] result + = it.toString ()}} assertEquals (" pozdrav ", rezultat)}

6. Zaključak

U ovom smo članku prošli kroz slučajeve upotrebe povratak, prekid, nastavak u Kotlinu.

Uzorak koda možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found