Razlika između operatora "==" i "===" u Kotlinu

1. Pregled

U ovom ćemo članku govoriti o razlika između operatora "==" i "===" u Kotlinu.

U Kotlinu, baš kao i na Javi, imamo dva različita koncepta jednakosti, Referentna jednakost, i Strukturalna jednakost.

2. Referentna jednakost

Za referentnu jednakost koristimo === simbol koji nam omogućuje procjenu reference objekta (ako pokazuje na isti objekt). Ovo je ekvivalent operatora "==" u Javi.

Recimo da imamo definirane dvije cijele brojeve:

val a = cijeli broj (10) val b = cijeli broj (10)

a provjeravamo ih oboje a === b, koji će se vratiti lažno jer su to dva odvojena objekta, svaki koji upućuje na različito mjesto u memoriji.

3. Strukturna jednakost

Sada za strukturnu jednakost koristimo == simbol koji procjenjuje jesu li obje vrijednosti iste (ili jednake). To se obično postiže provedbom jednako () metoda u Javi.

Dakle, koristeći isti Cijeli brojevi na primjer, samo trebamo učiniti a == b, i u ovom slučaju, vratit će se pravi, budući da obje varijable imaju istu vrijednost.

4. Usporedba složenih objekata

Ako želimo provjeriti jednakost na složenijim objektima, simboli će se ponašati isto. Recimo da imamo a Korisnik, koji ima popis hobija:

podatkovna klasa Korisnik (val ime: Niz, val starost: Int, val hobiji: Popis)

The === provjerit će referentnu jednakost i prikladnim korištenjem a Popis možemo iskoristiti da == operatora, koji će provjeriti objekt i podaci sadržani na popisu.

5. Nizovi jednakosti

Za Nizovi, od Kotlina 1.1 možemo provjeriti strukturnu jednakost koristeći infiks funkcije contentEquals i contentDeepEquals:

val hobi = arrayOf ("Planinarenje, šah") val hobi2 = arrayOf ("Planinarenje, šah") assertTrue (hobi contentEquals hobi2)

6. Zaključak

Ovaj je brzi vodič pokazao razliku između referentna i strukturna jednakost u Kotlinu, kroz vrlo jednostavan primjer.

Kao i uvijek, implementacija svih ovih primjera i isječaka može se naći na GitHubu.

Imajte na umu da je ovo projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.


$config[zx-auto] not found$config[zx-overlay] not found