Sobes.tech
Junior

Aký je rozdiel medzi dvojitým a trojitým rovnosťou v Kotlin, a na aký účel bola zavedená trojitá rovnosť?

sobes.tech AI

Odpoveď od AI

== porovnáva obsah objektov (štrukturálna rovnosť), volaním metódy equals(). === porovnáva referencie na objekty (referenčná rovnosť), kontrolou, či ukazujú na ten istý exemplár v pamäti.

Trojitá rovnosť (===) bola zavedená na explicitné porovnanie odkazov, čo je užitočné pre optimalizáciu (napríklad, vyhýbanie sa zbytočným kópiám alebo výpočtom, ak sú objekty identické) a v prípadoch, keď je potrebné presne vedieť, či dve premenné odkazujú na ten istý exemplár. V Jave to zodpovedá operátoru == pre objekty. V Kotlin-e je == prepísané na porovnanie obsahu, takže je potrebný samostatný operátor pre referenčnú rovnosť.