Kotlin Ternary Conditional Operator

1. Oversikt

Kort sagt, det er det ingen ternær operatør i Kotlin. Imidlertid bruker hvis og når uttrykk er med på å fylle dette hullet.

I denne opplæringen vil vi se på noen forskjellige måter å etterligne den ternære operatøren.

2. hvis og når Uttrykkene

I motsetning til andre språk, hvis og når i Kotlin er uttrykk. Resultatet av et slikt uttrykk kan tilordnes en variabel.

Ved å bruke dette faktum, begge deler hvis og når kan erstattes av den ternære operatøren på sin egen måte.

2.1. Bruker if-else

La oss ta en titt på bruk av hvis uttrykk for å etterligne den ternære operatøren:

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

I ovenstående uttrykk, hvis en er satt til ekte, våre resultat variabel er satt til ja. Ellers er det satt til Nei.

Det er verdt å merke seg det resultattypen avhenger av uttrykket på høyre side. Generelt er typen Noen. For eksempel hvis høyre side har en Boolsk type, blir resultatet Boolsk også:

val resultat: Boolsk = hvis (a == b) sant annet usant

2.2. Ved hjelp av når

Vi kan også bruke en når uttrykk for å lage en pseudo-ternær operatør:

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

Koden er enkel, grei og lett å lese. Hvis en er ekte, tilordne resultat å være ja. Ellers tilordner du den til Nei.

2.3. Elvis Operator

Noen ganger bruker vi hvis uttrykk for å hente ut noe verdi når det ikke er det null eller returner en standard når den er null:

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

Det er også mulig å gjøre det samme med når uttrykkene:

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

Siden dette er et så vanlig mønster, har Kotlin en spesiell operatør for det:

val resultat = a?: "Standard"

De ?: er kjent som Elvis-operatøren. Den returnerer operanden hvis den ikke er det null. Ellers returnerer den angitte standardverdien til høyre for ?: operatør.

2.4. DSL

Det er absolutt en fristelse å lage en DSL som etterligner en ternær operatør. Men Kotlins språkbegrensninger er for stramme til å tillate en 100% reproduksjon av den tradisjonelle ternære syntaksen.

La oss som sådan unngå denne fristelsen og bare bruke en av de tidligere nevnte løsningene.

3. Konklusjon

Selv om Kotlin ikke har en ternær operatør, er det noen alternativer vi kan bruke - hvis og når. De er ikke et syntaktisk sukker, men komplette uttrykk, som vi har sett tidligere.

Som alltid er koden tilgjengelig på GitHub.


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