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