Intern
Čo sú to dátové typy a aké existujú?
sobes.tech AI
Odpoveď od AI
Typy údajov určujú sadu možných hodnôt a operácií, ktoré je možné nad nimi vykonávať. Vo Swift sú rozdelené na Value Types a Reference Types.
Value Types (typy hodnôt):
- Hodnoty sa kopírujú pri priraďovaní alebo odovzdávaní do funkcie.
- Každá premenná alebo konštanta uchováva vlastnú nezávislú kópiu dát.
- Zmeny jednej kópie neovplyvňujú ostatné.
Príklady Value Types:
- Štruktúry (
struct) - Enumerácie (
enum) - Tuple (
tuple) - Základné typy:
Int,Double,Bool,String, polia (Array), slovníky (Dictionary), množiny (Set).
// Príklad Value Type: struct
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 dostáva kópiu p1
p2.x = 10 // Zmena p2 neovplyvňuje p1
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)
Reference Types (referenčné typy):
- Hodnoty sa nekopírujú. Pri priraďovaní alebo odovzdávaní
- do funkcie sa odovzdáva odkaz na ten istý inštanciu dát v pamäti.
- Niekoľko premenných alebo konštánt môže odkazovať na ten istý inštanciu.
- Zmeny cez jednu referenciu sú viditeľné cez všetky ostatné odkazy.
Príklady Reference Types:
- Triedy (
class) - Funkcie (
func) - Uzávierky (
closure)
// Príklad Reference Type: class
class Circle {
var radius: Double
init(radius: Double) {
self.radius = radius
}
}
var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 odkazuje na ten istý inštanciu ako c1
c2.radius = 10.0 // Zmena c2 ovplyvňuje c1
print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0
Tabuľka s hlavnými typmi:
| Kategória | Typ(y) | Typ hodnoty alebo referenčný typ | Popis |
|---|---|---|---|
| Celé čísla | Int, UInt, Int8, UInt8 a pod. |
Hodnota | Celé čísla rôznych veľkostí, so znamienkom alebo bez neho |
| Plávajúce čísla | Float, Double |
Hodnota | Čísla s desatinnou časťou |
| Logické hodnoty | Bool |
Hodnota | Logické hodnoty (true alebo false) |
| Riadky | String |
Hodnota | Sekvencia znakov |
| Kolekcie | Array, Dictionary, Set |
Hodnota | Usporiadané/neusporiadané kolekcie rovnakých prvkov |
| Štruktúry | struct |
Hodnota | Skladné vlastné typy, ktoré uchovávajú súvisiace hodnoty |
| Enumerácie | enum |
Hodnota | Určujú spoločný typ pre skupinu súvisiacich hodnôt |
| Tuple | (value1, value2, ...) |
Hodnota | Skupiny viacerých hodnôt do jedného skladného typu |
| Triedy | class |
Referenčný typ | Skladné vlastné typy, podporujúce dedičnosť a referenčné správanie |
| Funkcie | () -> Void, (Int) -> String a pod. |
Referenčný typ | Bloky vykonávacieho kódu |
| Uzávierky | { (parameters) -> return type in code } |
Referenčný typ | Samostatné bloky kódu, ktoré môžu byť odovzdané a použité |
| Opcionaly | Type? (syntaktický cukor pre Optional<Type>) |
Hodnota | Predstavuje buď hodnotu typu Type, alebo jej neprítomnosť (nil) |
Voľba medzi Value a Reference Typom závisí od úlohy: Value Types sú vhodnejšie pre malé dáta a zabezpečenie bezpečnosti vlákien, Reference Types - pre zložité objekty, ktoré vyžadujú spoločný stav a dedičnosť.