Middle
Jaké jsou rozdíly mezi sémantikami?
sobes.tech AI
Odpověď od AI
Typy hodnot:
- Kopírují se při přiřazení nebo předání do funkce.
- Každá změna vytvoří novou kopii.
- Ukládají se na zásobník (ve většině případů).
- Příklady:
struct,enum, základní typy (Int,Double,Bool,String).
Typy odkazů:
- Předávají se odkazem.
- Několik proměnných může odkazovat na stejný exemplář.
- Změna přes jednu proměnnou ovlivní všechny odkazy na tento exemplář.
- Ukládají se na haldě.
- Příklady:
class,func.
Porovnání:
| Vlastnost | Typy hodnot | Typy odkazů |
|---|---|---|
| Kopírování | Podle hodnoty | Podle odkazu |
| Změna | Vytvoří se nová kopie | Ovlivní všechny odkazy |
| Uložení | Zásobník (obvykle) | Haldě |
| Výkon | Často rychlejší (bez režie haldy a ARC) | Pomalejší (kvůli haldě a ARC) |
| Bezpečnost vláken | Výchozí, vlákna bezpečná (každé vlákno pracuje se svou kopií) | Vyžaduje synchronizaci při sdíleném přístupu z různých vláken |