{
data class Some(
val thing: Any
) : Demo()
}
fun smartCastFail(d: Demo) {
when(d!!) {
is Demo.Some -> d.thing // из-за "!!" не видит "thing"
}
}
У тебя в голове. Ты when матчишь по одному значению (d!!), а смарт каст хочешь для другого (d).
Немного сложный вопрос. С одной стороны d!! = d именно тут, т.е. можно сказать, что в смарт касте. С другой стороны формально это две разных вещи (т.е. мы вывели, что d!! это Some, но технически говоря это не d)
Обсуждают сегодня