다음 메소드가 있습니다. 그 논리는 매우 간단합니다. 오른쪽이 설정되면 값이있는 동안 왼쪽을 호출합니다 (null이 아님). 다음과 같은 방법으로 작성하면 작동합니다. 대신, 내가 할 - while 루프를 사용하여 코드를 단축하려고하면Kotlin 컴파일러는 변수가 do-while 루프에서 nullable이 아님을 알 수 없습니다.
fun goNext(from: Node): Node? {
var prev : Node = from
var next : Node? = from.right
if (next != null) {
prev = next
next = next.left
while (next != null) {
prev = next
next = next.left
}
}
return prev
}
는 더 이상 스마트 Node
에 next
을 캐스팅하지 않습니다. 그것은이 오류를 보여줍니다
Type mismatch.
Required: Node<T>
Found: Node<T>?
코드는 다음과 같습니다
fun goNext(from: Node): Node? {
var prev : Node = from
var next : Node? = from.right
if (next != null) {
do {
prev = next // Error is here, even though next can't be null
next = next.left
} while (next != null)
}
return prev
}
왜 그냥 while (next! = null) {...}'로 단순화하지 않습니까? –
당신이 옳습니다! 나는 그것을 보지 못했다. – biowep