Nowicjusz Kotlin pyta: "dlaczego poniższy kod nie zostanie skompilowany?":Inteligentne rzucanie do "Typu" jest niemożliwe, ponieważ "zmienna" jest zmienną właściwością, która mogła zostać zmieniona do tego czasu.
var left: Node? = null
fun show() {
if (left != null) {
queue.add(left) // ERROR HERE
}
}
Inteligentne oddanych do „Węzła” jest niemożliwe, ponieważ „w lewo” jest zmienny właściwość, która mogła zostać zmieniona przez ten czas
otrzymuję że left
jest zmienny zmienny , ale wyraźnie sprawdzam, czy left != null
i left
jest typu Node
, więc dlaczego nie można go inteligentnie rzutować na ten typ?
Jak mogę to naprawić elegancko? :)
Gdzieś pomiędzy różnymi wątkami można było ponownie zmienić wartość na zero. Jestem prawie pewien, że odpowiedzi na inne pytania również to wspominają. – nhaarman
Możesz użyć [bezpiecznego połączenia] (https://kotlinlang.org/docs/reference/null-safety.html#safe-calls), aby dodać – Whymarrh
dzięki @nhaarman, co ma sens, Whymarrh, jak to zrobić? Sądziłem, że bezpieczne połączenia dotyczą tylko obiektów, a nie metod. – feresr