Jeśli mam zerowalne Boolean b
mogę zrobić następujące porównania w Java:Użycie logiki Boolean? jeśli wyrażenie
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
W Kotlin, mogę osiągnąć to samo za pomocą operatora !!
:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
jednak , korzystanie z !!
wydaje mi się nieco pobieżne, omijając system bezpieczeństwa zerowy.
Czy istnieje bardziej eleganckie podejście do tego?
Edit Wydaje mi oversimplicated trochę. W przypadku zmiennych lokalnych, jak pokazuje Banthar, działa. Jednak mój Boolean b
jest w rzeczywistości "własnością z polem zaplecza" (nie jestem w stanie jeszcze przyspieszyć tego, co to narzuca). Jest to wynikiem:
Dlaczego potrzebujesz '!!b "a nie po prostu" b "? (Nie jestem zaznajomiony z kotlinami, tylko z ciekawostkami) – Maroun
@MarounMaroun Ponieważ 'b' może być' null' i jedną z cech Kotlina jest [Null Safety] (http://kotlinlang.org/docs/reference/null- safety.html # the - operator), co daje błędy kompilacji przy próbie oceny referencji zerowych. Zatem użycie zwykłego 'b' daje błąd kompilacji :) – nhaarman
Ale czy' b! = Nil' nie złapie tego przed sprawdzeniem prawej strony? – Maroun