Minha dúvida já foi feita no fórum, porém não consegui entender o porquê de continuar cinza. Aparece a seguinte mensagem quando coloco o mouse sobre "it.complemento?.length":
Unnecessary safe call on a non-null receiver of type String
Safe call on a non-null receiver will have nullable type in future releases Right now safe call on non nullable receiver has not null type: "hello"?.length
has type Int In future releases all safe calls will have nullable type: "hello"?.length
will have type Int?
E quando coloco o mouse sobre o Elvis operator:
Elvis operator (?:) always returns the left operand of non-nullable type Int
Código:
fun main() {
val enderecoNulo: Endereco? = Endereco(cidade = "POA")
val cidadeNova: String? = enderecoNulo?.cidade
println(enderecoNulo?.cidade?.length)
enderecoNulo?.let {
println(it.cidade.length + 2)
val tamanhoComplemento: Int =
it.complemento?.length ?: throw IllegalStateException("Complemento deve possuir um valor")
println(tamanhoComplemento)
}
}