Почему Kotlin умный актерский состав не работает, даже если оба являются - PullRequest
0 голосов
/ 25 апреля 2020

В приведенном ниже коде обе переменные равны val s, но интеллектуальное приведение не работает даже после нулевой проверки. Почему?

fun SLLNode?.sumListWith(node: SLLNode?, carry: Int = 0): SLLNode? =
    when {
        this == null && node == null -> if (carry == 0) null else SLLNode(carry)
        this == null -> node.also { it!!.value += carry } // Smart cast doesn't work here.
        node == null -> this.also { value += carry } // Works here.
        else -> {
            ...
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...