Wenn ich ein Nullable-Boolean b
habe, kann ich den folgenden Vergleich in Java tun:Verwendung von Boolean? in, wenn Ausdruck
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
jedoch:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
In Kotlin, ich das gleiche mit Hilfe des !!
Operator erreichen kann , die Verwendung von !!
fühlt sich ein bisschen skizzenhaft an, um das Nullsicherheitssystem zu umgehen.
Gibt es einen eleganteren Ansatz dafür?
bearbeiten Es scheint, dass ich ein bisschen oversimplicated. Für lokale Variablen, wie Banthar zeigt, funktioniert es. Allerdings ist mein Boolean b
eigentlich eine "Eigenschaft mit einem Backing-Feld" (ich bin noch nicht wirklich auf dem Laufenden was das vorgibt). Dies ist das Ergebnis:
Warum brauchen Sie '!!b' und nicht einfach 'b'? (Ich bin nicht so vertraut mit Kotlin, nur Kuriositäten) – Maroun
@MarounMaroun Da 'b' kann' null' sein und eine von Kotlins Eigenschaften ist [Null Sicherheit] (http://kotlinlang.org/docs/reference/null- safety.html # the - operator), die Kompilierungsfehler beim Auswerten von Nullwertreferenzen verursacht. Also, die Verwendung von plain 'b' gibt einen Kompilierungsfehler :) – nhaarman
Aber wird' b! = Nil' das nicht vor der Überprüfung der rechten Seite? – Maroun