Különbség a „==” és a „===” operátorok között Kotlinban

1. Áttekintés

Ebben a cikkben a különbség a „==” és a „===” operátorok között Kotlinban.

Kotlinban, csakúgy, mint a Java-ban, két különböző koncepciónk van az egyenlőségről, Referenciális egyenlőség, és Strukturális egyenlőség.

2. Referenciális egyenlőség

A referenciális egyenlőség érdekében a === szimbólum, amely lehetővé teszi számunkra az objektum referenciájának értékelését (ha ugyanarra az objektumra mutat). Ez egyenértékű a „==” operátorral a Java-ban.

Tegyük fel, hogy két egész számot definiáltunk:

val a = egész (10) val b = egész (10)

és mindkettőjüket ellenőrizzük a === b, amely visszatér hamis mert két különálló objektumról van szó, amelyek mindegyike más helyre mutat a memóriában.

3. Strukturális egyenlőség

Most a strukturális egyenlőség érdekében a == szimbólum, amely kiértékeli, hogy mindkét érték azonos-e vagy egyenlő-e. Ezt általában megvalósítással érik el egyenlő () módszer Java-ban.

Tehát ugyanazt használva Egész számok például csak meg kell tennünk a == b, és ebben az esetben visszatér igaz, mivel mindkét változónak ugyanaz az értéke.

4. Összetett objektumok összehasonlítása

Ha bonyolultabb objektumok egyenlőségét akarjuk ellenőrizni, a szimbólumok ugyanúgy fognak viselkedni. Tegyük fel, hogy van egy Felhasználó, amely tartalmazza a hobbik listáját:

adatosztály Felhasználó (val név: Karakterlánc, val kor: Int, val hobbi: Lista)

A === ellenőrzi a referencia egyenlőségét és a Lista kihasználhatjuk, hogy a == operátor, amely ellenőrzi az objektumot és a listán szereplő adatok.

5. Tömbök egyenlőség

Mert Tömbök, a Kotlin 1.1-től kezdve ellenőrizhetjük a strukturális egyenlőséget a szóbelseji formáns funkciókat contentEquals és contentDeepEquals:

val hobbies = arrayOf ("túrázás, sakk") val hobbies2 = arrayOf ("túrázás, sakk") assertTrue (hobbies contentEquals hobbies2)

6. Következtetés

Ez a gyors bemutató bemutatta a különbséget referenciális és strukturális egyenlőség Kotlinban, egy nagyon egyszerű példán keresztül.

Mint mindig, ezeknek a példáknak és kivonatoknak a megvalósítása megtalálható a GitHubon.

Vegye figyelembe, hogy ez egy Maven-alapú projekt, ezért egyszerűnek kell lennie az importálás és a jelenlegi állapotban történő futtatás érdekében.


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