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.