Sobes.tech
Intern

Kas ir datu tipi un kādi ir tie?

sobes.tech AI

Atbilde no AI

Datu tipi nosaka iespējamās vērtības un operācijas, kuras var veikt ar tām. Swift tie iedala Value Types un Reference Types.

Value Types (vērtību tipi):

  • Vērtības tiek kopētas pie piešķiršanas vai nodošanas funkcijai.
  • Katrs mainīgais vai konstante glabā savu neatkarīgu datu kopiju.
  • Izmaiņas vienā kopijā neietekmē citas.

Piemēri Value Types:

  • Struktūras (struct)
  • Enum (enum)
  • Tupelis (tuple)
  • Galvenie tipi: Int, Double, Bool, String, masīvi (Array), vārdnīcas (Dictionary), kopas (Set).
// Piemērs Value Type: struct
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 saņem p1 kopiju
p2.x = 10 // Izmaiņas p2 neietekmē p1

print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)

Reference Types (atsauces tipi):

  • Vērtības netiek kopētas. Pie piešķiršanas vai nodošanas
  • tiek nodota atsauce uz to pašu datu eksemplāru atmiņā.
  • Vairāki mainīgie vai konstantes var atsaukties uz vienu un to pašu eksemplāru.
  • Izmaiņas caur vienu atsauci ir redzamas visās citās atsaucēs.

Piemēri Reference Types:

  • Klases (class)
  • Funkcijas (func)
  • Aizvērumi (closure)
// Piemērs Reference Type: class
class Circle {
    var radius: Double

    init(radius: Double) {
        self.radius = radius
    }
}

var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 atsaucas uz to pašu eksemplāru kā c1
c2.radius = 10.0 // Izmaiņas ietekmē c1

print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0

Galveno tipu tabula:

Kategorija Tips(-i) Value/Reference Type Apraksts
Veseli skaitļi Int, UInt, Int8, UInt8 un citi Value Veseli skaitļi dažādos izmēros, ar vai bez zīmes
Decimālie skaitļi Float, Double Value Skaitļi ar decimāldaļu
Loģiskie Bool Value Loģiskās vērtības (true vai false)
Rindas String Value Simbolu secība
Kolekcijas Array, Dictionary, Set Value Sakārtotas vai nesakārtotas kolekcijas ar vienāda tipa elementiem
Struktūras struct Value Lietotāja definēti sarežģīti tipi, kas glabā saistītas vērtības
Enum enum Value Nosaka kopēju tipu saistītu vērtību grupai
Tupelis (value1, value2, ...) Value Vairāku vērtību apvienojums vienā strukturētā tipā
Klases class Reference Lietotāja definēti sarežģīti tipi, kas atbalsta mantošanu un atsauces uzvedību
Funkcijas () -> Void, (Int) -> String un citi Reference Koda bloki, kas izpilda funkcionalitāti
Aizvērumi { (parameters) -> return type in code } Reference Pašpietiekami koda bloki, kurus var nodot un izmantot
Opcionalitātes Type? (syntaktiska cukura Optional<Type>)

Izvēle starp Value un Reference tipiem ir atkarīga no uzdevuma: Value tipi ir piemērotāki mazākiem datiem un drošai plūsmai, Reference tipi — sarežģītākiem objektiem, kam nepieciešama kopīga stāvokļa pārvaldība un mantošana.