Avatar ·

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