Kotlin Ternary Conditional Operator

1. Oversigt

Kort sagt er der ingen ternær operatør i Kotlin. Brug dog hvis og hvornår udtryk hjælper med at udfylde dette hul.

I denne vejledning ser vi på et par forskellige måder at efterligne den ternære operatør.

2. hvis og hvornår Udtryk

I modsætning til andre sprog hvis og hvornår i Kotlin er udtryk. Resultatet af et sådant udtryk kan tildeles en variabel.

Brug af denne kendsgerning begge hvis og hvornår kan erstattes af den ternære operatør på deres egen måde.

2.1. Brug af if-else

Lad os se på brugen af hvis udtryk for at efterligne den ternære operatør:

val resultat = hvis (a) "ja" ellers "nej"

I ovenstående udtryk, hvis -en er indstillet til rigtigt, vores resultat variabel er indstillet til Ja. Ellers er den indstillet til ingen.

Det er værd at bemærke det resultattypen afhænger af udtrykket på højre side. Generelt er typen Nogen. For eksempel, hvis højre side har en Boolsk type, bliver resultatet Boolsk såvel:

val resultat: Boolsk = hvis (a == b) sand ellers falsk

2.2. Ved brug af hvornår

Vi kan også bruge en hvornår udtryk for at oprette en pseudo-ternær operator:

val result = when (a) {true -> "yes" false -> "no"}

Koden er enkel, ligetil og let at læse. Hvis -en er rigtigt, tildele resultat at være Ja. Ellers tildel det til ingen.

2.3. Elvis operatør

Nogle gange bruger vi hvis udtryk for at udtrække en værdi, når det ikke er det nul eller returner en standard, når den er nul:

val a: streng? = null val resultat = hvis (a! = null) en anden "Standard"

Det er også muligt at gøre det samme med hvornår udtryk:

val resultat = når (a) {null -> "Standard" andet -> a}

Da dette er et så almindeligt mønster, har Kotlin en særlig operatør til det:

val resultat = a?: "Standard"

Det ?: er kendt som Elvis-operatøren. Det returnerer operanden, hvis det ikke er det nul. Ellers returnerer den specificerede standardværdi til højre for ?: operatør.

2.4. DSL

Der er bestemt en fristelse til at oprette en DSL, der efterligner en ternær operatør. Men Kotlins sprogbegrænsninger er for stramme til at muliggøre en 100% gengivelse af den traditionelle ternære syntaks.

Lad os som sådan undgå denne fristelse og blot bruge en af ​​de tidligere nævnte løsninger.

3. Konklusion

Selvom Kotlin ikke har en ternær operatør, er der nogle alternativer, vi kan bruge - hvis og hvornår. De er ikke et syntaktisk sukker, men komplette udtryk, som vi tidligere har set.

Som altid er koden tilgængelig på GitHub.