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.