Jeśli mam wartość null Boolean b
, mogę wykonać następujące porównanie w Javie:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
W Kotlinie to samo mogę osiągnąć za pomocą !!
operatora:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Jednak użycie !!
jest dla mnie trochę szkicowe, omijając zerowy system bezpieczeństwa.
Czy jest na to bardziej eleganckie podejście?
Edycja Wygląda na to, że trochę przesadziłem. W przypadku zmiennych lokalnych, jak pokazuje Banthar , działa. Jednak moja wartość logiczna b
jest w rzeczywistości „właściwością z polem zapasowym” (nie jestem jeszcze na bieżąco z tym, co to narzuca). Oto wynik:
b
może być, null
a jedną z funkcji Kotlina jest Null Safety , która daje błędy kompilacji podczas próby oceny referencji dopuszczających wartość null. Tak więc użycie zwykłego b
daje błąd kompilacji :)
b != nil
złapiesz tego przed sprawdzeniem prawej strony?
val r = b?doSomething() ?: doSomethingElse()
powinno działać.
!!b
a nie po prostub
? (Nie jestem zbyt zaznajomiony z kotlinem, tylko ciekawostki)