Kotlinski ternarni uvjetni operater

1. Pregled

Ukratko, postoji nema ternarnog operatera u Kotlinu. Međutim, koristeći ako i kada izrazi pomažu u popunjavanju ove praznine.

U ovom uputstvu proučit ćemo nekoliko različitih načina oponašanja ternarnog operatora.

2. ako i kada Izrazi

Za razliku od ostalih jezika, ako i kada u Kotlinu su izrazi. Rezultat takvog izraza može se dodijeliti varijabli.

Koristeći ovu činjenicu, oboje ako i kada mogu na svoj način zamijeniti ternarnog operatora.

2.1. Koristeći if-else

Pogledajmo korištenje ako izraz koji oponaša ternarni operator:

val rezultat = if (a) "yes" else "no"

U gornjem izrazu, ako a postavljeno je na pravi, naš proizlaziti varijabla je postavljena na Da. Inače je postavljeno na Ne.

Vrijedno je to napomenuti vrsta rezultata ovisi o izrazu s desne strane. Općenito, tip je Bilo koji. Na primjer, ako desna strana ima Booleova tipa, rezultat će biti Booleova također:

rezultat vala: Boolean = if (a == b) true else false

2.2. Koristeći kada

Također možemo koristiti i kada izraz za stvaranje pseudo-ternarnog operatora:

val rezultat = kada (a) {true -> "yes" false -> "no"}

Kôd je jednostavan, jasan i lak za čitanje. Ako a je pravi, dodijelite proizlaziti biti Da. U suprotnom, dodijelite ga Ne.

2.3. Elvis Operator

Ponekad koristimo ako izrazi za izdvajanje neke vrijednosti kad nije null ili vratite zadani kad je null:

val a: Niz? = null val rezultat = if (a! = null) a else "Zadano"

Također je moguće učiniti isto s kada izrazi:

val rezultat = kada (a) {null -> "Zadano" else -> a}

Budući da je ovo tako čest obrazac, Kotlin za njega ima posebnog operatora:

val rezultat = a?: "Zadani"

The ?: poznat je kao Elvisov operator. Vraća operand ako nije null. U suprotnom, vratit će zadanu vrijednost navedenu s desne strane znaka ?: operater.

2.4. DSL

Svakako postoji napast za stvaranje DSL-a koji oponaša trostrukog operatora. Ali, Kotlinova su jezična ograničenja pretijesna da bi omogućila stopostotnu reprodukciju tradicionalne ternarne sintakse.

Kao takvi, izbjegavajmo ovo iskušenje i jednostavno se poslužimo jednim od ranije spomenutih rješenja.

3. Zaključak

Iako Kotlin nema ternarnog operatora, postoje neke alternative koje možemo koristiti - ako i kada. Oni nisu sintaktički šećer, već cjeloviti izrazi, kao što smo već vidjeli.

Kao i uvijek, kôd je dostupan na GitHub-u.


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