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 |