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.