Java Boolean.valueOf() ækvivalent i Kotlin?
Det er, som allerede nævnt, .toBoolean()
.
Det virker ret simpelt:hvis værdien af en streng er true
, ignorerer store og små bogstaver, den returnerende værdi er true
. I alle andre tilfælde er det falsk. Hvilket betyder, at hvis strengen ikke er en boolsk, vil den returnere falsk.
Kotlin har grundlæggende to varianter af typer:Any
og Any?
. Any
kan selvfølgelig være en hvilken som helst klasse, eller henvise til den faktiske klasse Any
.
toBoolean
kræver en String
, hvilket betyder en ikke-nul streng. Det er ret grundlæggende:
val someString = "true"
val parsedBool = someString.toBoolean()
Det bliver lidt mere kompliceret, hvis du har nullbare typer. Som jeg nævnte, toBoolean
kræver en String
. En String?
!=String
i disse tilfælde.
Så hvis du har en nullbar type, kan du bruge safe call og elvis-operatøren
val someString: String? = TODO()
val parsedBool = someString?.toBoolean() ?: false
Eller, hvis du kan leve med en nullbar boolean, behøver du ikke elvis-operatøren. Men hvis strengen er nul, vil den boolske værdi også være det.
Bare en forklaring på ovenstående:
someString?.//If something != null
toBoolean() // Call toBoolean
?: false // Else, use false
Du kan heller ikke kompilere et program, der bruger toBoolean
på en nul-reference. Compileren blokerer det.
Og endelig, til reference, metodeerklæringen:
/**
* Returns `true` if the contents of this string is equal to the word "true", ignoring case, and `false` otherwise.
*/
@kotlin.internal.InlineOnly
public actual inline fun String.toBoolean(): Boolean = java.lang.Boolean.parseBoolean(this)
String.toBoolean
Returnerer sand, hvis indholdet af denne streng er lig med ordet "true", ignorerer store og små bogstaver og ellers falsk.
I Kotlin er en streng aldrig null, så du behøver ikke at tjekke den. Dette returnerer en boolesk (sand kun hvis strengværdien er 'sand')
myString.toBoolean()
Hvis du nu har en streng? skriv og ønsker en boolsk
myString?.toBoolean() ?: false
Hvis du er ok med en boolesk? type returneret
myString?.toBoolean()
Du bør vide, om det er null
før opkaldet, fordi du enten har med en String
at gøre eller en String?
. ?
er suffikset, som Kotlin bruger til at angive nullbare typer.
Hvis du har en String
, så burde du kunne bruge toBoolean()
.
Hvis du har en String?
— og så du kan have en værdi, eller du kan have null
— du kan bruge et null-safe-opkald plus Elvis-operatøren til at angive, hvilken værdi du ønsker, hvis String?
er null
:
val foo: String? = "true"
val bar: String? = null
println(foo?.toBoolean())
println(bar?.toBoolean() ?: false)
Dette udskriver:
true
false
bar?.toBoolean()
evalueres til null
og null ?: false
evalueres til false
.