Rozdiel medzi operátormi „==“ a „===“ v Kotline

1. Prehľad

V tomto článku budeme hovoriť o rozdiel medzi operátormi „==“ a „===“ v Kotline.

V Kotline, rovnako ako v Jave, máme dva rôzne koncepty rovnosti, Referenčná rovnosťa Štrukturálna rovnosť.

2. Referenčná rovnosť

Pre referenčnú rovnosť používame === symbol, ktorý nám umožňuje vyhodnotiť referenciu objektu (ak smeruje na rovnaký objekt). Toto je ekvivalent operátora „==“ v Jave.

Povedzme, že máme definované dve celé čísla:

val a = Celé číslo (10) val b = Celé číslo (10)

a obidve ich skontrolujeme a === b, ktorý sa vráti nepravdivé pretože sú to dva samostatné objekty, z ktorých každý smeruje na iné miesto v pamäti.

3. Štrukturálna rovnosť

Teraz pre štrukturálnu rovnosť používame == symbol, ktorý vyhodnocuje, či sú obidve hodnoty rovnaké (alebo rovnaké). Spravidla sa to dosiahne implementáciou rovná sa () metóda v Jave.

Takže pomocou toho istého Celé čísla napríklad musíme urobiť a == b, a v takom prípade sa vráti pravda, pretože obe premenné majú rovnakú hodnotu.

4. Porovnanie zložitých objektov

Ak chceme skontrolovať rovnosť na zložitejších objektoch, symboly sa budú správať rovnako. Povedzme, že máme Používateľ, ktorá má zoznam záľub:

dátová trieda Užívateľ (názov úrovne: String, vek veku: Int, koníčky koní: Zoznam)

The === skontroluje referenčnú rovnosť a pohodlným použitím a Zoznam môžeme využiť výhodu, že == operátor, ktorý objekt skontroluje a údaje obsiahnuté v zozname.

5. Pole Rovnosť

Pre Polia, od verzie Kotlin 1.1 môžeme skontrolovať štrukturálnu rovnosť pomocou infix funkcie contentEquals a contentDeepEquals:

val koníčky = arrayOf ("Turistika, šach") val koníčky2 = arrayOf ("Turistika, šach") assertTrue (koníčky obsah Rovná koníčky2)

6. Záver

Tento rýchly tutoriál predstavil rozdiel medzi referenčná a štrukturálna rovnosť v Kotlineprostredníctvom veľmi jednoduchého príkladu.

Implementáciu všetkých týchto príkladov a úryvkov ako vždy nájdete na GitHub.

Upozorňujeme, že toto je projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


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