Evaluación de la igualdad en Kotlin

Kotlin proporciona una característica adicional de comparar las instancias de un tipo particular de dos maneras diferentes. Esta característica hace que Kotlin sea diferente a los demás lenguajes de programación. 
Los dos tipos de igualdad son: 

  • Igualdad Estructural
  • Igualdad Referencial

Igualdad Estructural –

La igualdad estructural se comprueba mediante el operador == y su operador != inverso . De forma predeterminada, la expresión que contiene x==y se traduce en la llamada de la función equals() para ese tipo. 
 

x?.equals(y) ?: (y === null)

establece que si x no es igual a nulo, llama a la función equals(y) , de lo contrario, si se encuentra que x es nulo, verificará si y es referencialmente igual a nulo. 
Nota: cuando (x == nulo), automáticamente se convertirá a igualdad referencial (x === nulo), por lo que no es necesario optimizar el código aquí.
Por lo tanto, para usar == en instancias de un tipo, el tipo debe anular la función equals(). Para una string, la igualdad estructural compara los contenidos .
 

Igualdad Referencial –

La igualdad referencial en Kotlin se comprueba mediante el operador === y su operador !== inverso . Esta igualdad devuelve verdadero solo si ambas instancias de un tipo apuntan a la misma ubicación en la memoria. Cuando se usa en tipos que se convierten en tipos primitivos en tiempo de ejecución, el control === se convierte en == control y !== control se convierte en != control.
Programa Kotlin para demostrar la igualdad estructural y referencial – 

Java

class Square(val side: Int) {
    override fun equals(other: Any?): Boolean {
        if(other is Square){
            return other.side == side
        }
        return false
    }
}
// main function
fun main(args :Array<String>) {
    val square1 = Square(5)
    val square2 = Square(5)
    // structural equality
    if(square1 == square2) {
        println("Two squares are structurally equal")
    }
    // referential equality
    if(square1 !== square2) {
        println("Two squares are not referentially equal")
    }
}

Producción: 
 

Two squares are structurally equal
Two squares are not referentially equal

Publicación traducida automáticamente

Artículo escrito por CharchitKapoor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *