terça-feira, 28 de abril de 2020

Igualdade de objetos em Kotlin


#kotlin #dev #software #android
Kotlin é estranha, disto, não há dúvidas. Mas é a ferramenta oficial para criar aplicações Android, e, em sua defesa, outras linguagens são igualmente estranhas, como Swift. Vamos começar uma série de tutoriais e cursos gratuitos sobre Kotlin e Android. Continue a ler para saber mais




Vamos começar uma série de cursos e tutoriais sobre Kotlin e Android.

Para começar, vejamos a esquisitice da igualdade de objetos. Em Java, todos sabemos que, para comparar se dois objetos são iguais, temos que usar o método "equals()". Porém, em Kotlin isso é um pouco diferente. Temos a igualdade de referência e a igualdade estrutural, dois conceitos importantes:

  • Igualdade de referência (operador "==="): Se duas variáveis apontam para o mesmo objeto;
  • Igualdade estrutural (operador "=="): Se dois objetos têm o mesmo conteúdo;

O que é a igualdade estrutural? O que é "ter o mesmo conteúdo"? Ao criar uma classe, podemos estabelecer as condições de igualdade ao sobrescrever o método "equals()". Kotlin também tem isso.

Vou mostrar um pequeno exemplo. Para começar, vou criar uma "data class", que é uma classe para armazenamento e transporte de dados, cujos principais métodos, como o "equals" são gerados a partir dos dados:

data class Empregado (val nome: String)

fun main() {
    val a = Empregado("Fulano")
    val b = a    val c = Empregado("Fulano")
    println("a == b: ${a==b}")
    println("a === b: ${a===b}")
    println("a == c: ${a==c}")
    println("a === c: ${a===c}")
}

Criamos 3 variáveis imutáveis e vamos compará-las com os dois operadores. Qual será o resultado?

a == b: true
a === b: true
a == c: true
a === c: false

Primeiramente, "a" e "b" apontam para o mesmo objeto, portanto, são estruturalmente e referencialmente iguais. Já a variável "c" aponta para outro objeto, embora com o mesmo conteúdo (o mesmo "nome") do objeto apontado por "a". A igualdade referencial é falsa, mas a estrutural é verdadeira.

Continue comigo para mais tutoriais e cursos gratuitos de Kotlin e Android!

Nenhum comentário:

Postar um comentário