Sobes.tech
Middle

Aké sú rozdiely medzi sémantikami?

sobes.tech AI

Odpoveď od AI

Typy hodnôt:

  • Sú kopírované pri priraďovaní alebo odovzdaní do funkcie.
  • Každá zmena vytvára novú kópiu.
  • Ukladajú sa na zásobník (vo väčšine prípadov).
  • Príklady: struct, enum, základné typy (Int, Double, Bool, String).

Typy odkazov:

  • Sú odovzdávané odkazom.
  • Viacero premenných môže odkazovať na ten istý exemplár.
  • Zmena cez jednu premennú ovplyvňuje všetky odkazy na tento exemplár.
  • Ukladajú sa na haldu.
  • Príklady: class, func.

Porovnanie:

Vlastnosť Typy hodnôt Typy odkazov
Kopírovanie Podľa hodnoty Podľa odkazu
Zmena Vytvorí sa nová kópia Ovplyvňuje všetky odkazy
Ukladanie Zásobník (zvyčajne) Haldy
Výkon Často rýchlejšie (bez režijných nákladov na haldu a ARC) Pomalšie (kvôli halde a ARC)
Bezpečnosť vlákien Predvolene bezpečné pre vlákna (každé vlákno pracuje so svojou kópiou) Vyžaduje synchronizáciu pri prístupe z rôznych vlákien