fooIsNotNull() : Boolean {
return (foo != null)
}
}
val bar: Bar = Bar(foo = "")
if (bar.fooIsNotNull()) {
val s : String = bar.foo // cant smart cast foo : String? to String
}
Народ, как я понял smart cast в котлине достаточно ограничен и анализировать что происходило в других функциях он не умеет, и пытаться что-то делать через "иммутабельность" это гиблое дело. Или я что-то упускаю. Печально.
В 1.3 если не ошибаюсь появятся контракты как раз для таких вот случаев
Обсуждают сегодня