Sunrabbit

Kovariancia és kontravariancia

  • Írás nyelve: Koreai
  • Országkód: Minden országcountry-flag
  • Informatika

Létrehozva: 2024-11-01

Létrehozva: 2024-11-01 01:06

Ez a tartalom akkor válik relevánssá, ha Ön fordítófejlesztő, ha a fordító API-ját használja, vagy ha túlzottan használja a fordító típusrendszerét.
Természetesen találkozni fog vele.
Ha túl sokat használja a fordító típusrendszerét, akkor is találkozni fog vele.

És természetesen beépül a kódolási életünkbe.


Egyszerűen fogalmazva, ha két típusunk van, az Animal és a Dog,

ha egy Animal-nak Dog-ot rendelünk,kovarianciárólbeszélünk,

ellentétbenha egy Dog-nak Animal-t rendelünk,kontravariánsrólbeszélünk.

Általában nem lehet Dog-nak Animal-t rendelni.

Mivel ez a hétköznapi ember szemszögéből nem elfogadható,
ezért a fordítófejlesztők figyelembe veszik ezt, és csakbizonyos részekrekontravariánciát alkalmaznak.


Általában a kontravariáns viselkedést a függvények bemeneti értékeire alkalmazzák, míg a kimeneti értékekre a kovariáns viselkedést tartják meg.


És miért van szükség erre a kontravariáns viselkedésre?gondolhatja.

Ez az eseménykezeléshez hasonló helyzetekben segít rugalmasabb és polimorfabb működést biztosítani.

Sőt, a kovariáns viselkedés problémákat is okozhat.


A fenti kód a Dog helyett Animal-t használ, így rugalmasságot biztosít és lehetővé teszi a polimorfizmus figyelembe vételét.

Ha a Dog helyett egy Chiwawa-t (a Dog alosztályát) használnánk, akkor az eseménykezelő futtatásakor hiba lépne fel, mivel a Dog-ban nincs Chiwawa-specifikus interfész.


Sőt, ha az Animal típusú változót használjuk a függvény futtatásakor, akkor az Animal alosztályait automatikusan elfogadja.

Ez hasonló érzést kelthet, mintha Animal-nak Dog-ot rendeltünk volna.


Így a kontravariáns viselkedést általában a bemeneti értékekre alkalmazzák.


Invariáns és invariáns


Röviden: az invariáns típusok egyszerre kovariánsak és kontravariánsak, míg az invariáns típusok egyik sem.

Összegzés

Ez a tartalom egyszerű is lehet, és bonyolult is lehet, ezért

javasoljuk, hogy olvassa el ezt a cikket is.




Hozzászólások0