Smart cast to 'Type' é impossível: como corrigir o erro com propriedades mutáveis em Kotlin
Olá! Comecei a estudar Kotlin e me deparei com um erro que não consigo entender. Tenho um código simples onde tento verificar o tipo de uma variável e executar alguma ação se ela for uma string:
```kotlin
var value: Any = "Hello, Kotlin!"
if (value is String) {
println(value.length) // Erro: Smart cast to 'String' is impossible
}
```
O compilador diz: "Smart cast to 'String' is impossible, because 'value' is a mutable property that could have been changed by this time". Entendo que `value` é uma variável mutável, mas por que isso é um problema? Afinal, acabei de verificar seu tipo dentro do `if`! Se eu usasse `val`, funcionaria. Mas preciso que a variável possa mudar. Como lidar corretamente com essas situações? Existe algum padrão ou forma alternativa? Agradeço pela explicação com exemplos.
<<>>
Por que ocorre o erro Smart cast?
O problema é que o compilador Kotlin não pode garantir que, entre