Kotlin návrat, zlom, pokračovanie Kľúčové slová

1. Prehľad

V tomto tutoriáli sa budeme venovať použitiu výrazov štrukturálneho skoku v Kotline.

Jednoducho povedané, Kotlin má tri výrazy štrukturálneho skoku: vrátiť sa, zlomiť, pokračovať. V ďalších častiach sa budeme zaoberať ich funkciami so štítkom aj bez neho.

2. Štítky v Kotline

Akékoľvek výrazy v Kotline môžu byť označené štítkom.

Štítok vytvoríme pomocou identifikátora, za ktorým nasleduje „@” podpísať. Napríklad, [chránené e-mailom], [chránené e-mailom] sú platné štítky.

Ak chcete označiť výraz, jednoducho ho pridáme pred neho:

[chránené e-mailom] pre (i v 1..10) {// nejaký kód}

3. The Prestávka Vyhlásenie

Bez štítku, prestávka ukončí najbližšiu uzatvárajúcu slučku.

Pozrime sa na príklad:

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

Prípadne môžeme použiť prestávka štítkom, ktorý ukončuje slučku označenú týmto štítkom:

@Test zábava givenLoop_whenBreakWithLabel_thenComplete () {var value = "" [chránený e-mailom] pre (i v 'a' .. 'd') {pre (j v 1..3) {hodnota + = "" + i + j ak (i == 'b' && j == 1) [chránený e-mailom] _loop}} assertEquals ("a1a2a3b1", hodnota)}

V tomto prípade je vonkajšia slučka ukončená, keď i a j premenné rovnajúce sa „b“ a „1“.

4. The ďalej Vyhlásenie

Ďalej sa pozrime na ďalej kľúčové slovo, ktoré môžeme použiť aj s označením alebo bez neho.

Bez štítku, ďalej prejde na ďalšiu iteráciu uzatvárajúcej slučky:

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

Na druhej strane, keď používame ďalej so štítkom označujúcim slučku, prejde na ďalšiu iteráciu tejto slučky:

@Test fun givenLoop_whenContinueWithLabel_thenComplete () {var result = "" [chránený e-mailom] pre (i v 'a' .. 'c') {for (j v 1..3) {if (i == 'b') [ chránené e-mailom] _loop result + = "" + i + j}} assertEquals ("a1a2a3c1c2c3", výsledok)}

V tomto príklade sme použili ďalej preskočiť jednu iteráciu označenej slučky outer_loop.

5. Návrat Vyhlásenie

Bez štítku vráti sa k najbližšej uzavieracej funkcii alebo anonymnej funkcii:

@Test fun givenLambda_whenReturn_thenComplete () {var result = returnInLambda (); assertEquals ("ahoj", výsledok)} súkromná zábava returnInLambda (): reťazec {var result = "" "hello_world" .forEach {if (it == '_') vráti výsledok výsledku + = it.toString ()} // tento riadok nebude dosiahnutý výsledok návratu; }

Návrat je tiež užitočné, keď chceme uplatniť ďalej logika na anonymfunkcie:

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

V tomto príklade návrat vyhlásenie sa vráti volajúcemu anonymnej zábavy, t. j pre každý slučka.

V prípade výrazu lambda môžeme tiež použiť návrat so štítkom na dosiahnutie podobného výsledku:

@Test zábava givenLambda_whenReturnWithExplicitLabel_thenComplete () {var result = "" "hello_world" .forEach [chránený e-mailom] {if (it == '_') {[chránený e-mailom]} výsledok + = it.toString ()} assertEquals ("helloworld" ", výsledok)}

Prípadne môžeme tiež návrat pomocou implicitného označenia:

@Test fun givenLambda_whenReturnWithImplicitLabel_thenComplete () {var result = "" "hello_world" .forEach {if (it == '_') {// lokálny návrat k volajúcemu lambda, tj. Slučka forEach [chránená e-mailom]} + = it.toString ()} assertEquals ("helloworld", výsledok)}

Vo vyššie uvedenom príklade sa príkaz return vráti aj volajúcemu lambda - pre každý slučka.

Nakoniec návrat možno použiť s označením na uplatniť prestávka logika výrazov lambda podľanávrat k štítku vonku:

@Test fun givenAnonymousFunction_returnToLabel_thenComplete () {var result = "" spustiť [chránený e-mailom] {"hello_world" .forEach {if (it == '_') [chránený e-mailom] výsledok + = it.toString ()}} assertEquals (" ahoj ", výsledok)}

6. Záver

V tomto článku sme prešli prípadmi použitia vrátiť sa, zlomiť, pokračovať v Kotline.

Ukážkový kód nájdete na GitHub.


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