Sobes.tech
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ť.