Sobes.tech
Intern

Kas yra duomenų tipai ir kokie jų yra?

sobes.tech AI

Atsakymas iš AI

Duomenų tipai apibrėžia galimų reikšmių rinkinį ir operacijas, kurias galima atlikti su jais. Swift jie skirstomi į Value Types ir Reference Types.

Value Types (reikšmių tipai):

  • Reikšmės kopijuojamos priskyrimo ar perdavimo funkcijai metu.
  • Kiekviena kintamoji ar konstanta saugo savo nepriklausomą duomenų kopiją.
  • Pakeitimai vienoje kopijoje neturi įtakos kitoms.

Pavyzdžiai Value Types:

  • Struktūros (struct)
  • Enumai (enum)
  • Tupeliai (tuple)
  • Pagrindiniai tipai: Int, Double, Bool, String, masyvai (Array), žodynai (Dictionary), rinkiniai (Set).
// Pavyzdys Value Type: struct
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 gauna kopiją iš p1
p2.x = 10 // Pakeitimai p2 neveikia p1

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

Reference Types (nuorodų tipai):

  • Reikšmės nekopijuojamos. Priskyrimo ar perdavimo metu
  • perduodama nuoroda į tą patį duomenų egzempliorių atmintyje.
  • Keletas kintamųjų ar konstantų gali nuoroda į tą patį egzempliorių.
  • Pakeitimai per vieną nuorodą matomi per visus kitus nuorodų taškus.

Pavyzdžiai Reference Types:

  • Klasės (class)
  • Funkcijos (func)
  • Uždarymai (closure)
// Pavyzdys Reference Type: class
class Circle {
    var radius: Double

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

var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 nuoroda į tą patį egzempliorių kaip ir c1
c2.radius = 10.0 // Pakeitimai c2 veikia c1

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

Pagrindinių tipų lentelė:

Kategorija Tipas(-ai) Value/Reference Type Aprašymas
Sveikieji skaičiai Int, UInt, Int8, UInt8 ir kt. Value Skaičiai su įvairiais dydžiais, su arba be ženklo
Slankieji skaičiai Float, Double Value Skaičiai su dešimtainiu skaitmeniu
Loginiai Bool Value Loginės reikšmės (true arba false)
Eilutės String Value Simbolių seka
Kolekcijos Array, Dictionary, Set Value Tvarkingos arba netvarkingos kolekcijos su vienodo tipo elementais
Struktūros struct Value Sudėtiniai naudotojo apibrėžti tipai, saugantys susijusias reikšmes
Enumai enum Value Apibrėžia bendrą tipą grupės susijusiems reikšmėms
Tupeliai (value1, value2, ...) Value Kelios reikšmės sujungtos į vieną sudėtinį tipą
Klasės class Reference Sudėtiniai naudotojo apibrėžti tipai, palaikantys paveldėjimą ir nuorodų elgseną
Funkcijos () -> Void, (Int) -> String ir kt. Reference Vykdomi kodo blokai
Uždarymai { (parameters) -> return type in code } Reference Savarankiški kodo blokai, kuriuos galima perduoti ir naudoti
Pasirinktiniai Type? (syntaksinis cukrus Optional<Type>)

Pasirinkimas tarp Value ir Reference tipų priklauso nuo užduoties: Value tipai yra tinkamesni mažiems duomenims ir saugiam srautui, Reference tipai — sudėtingiems objektams, kuriems reikalingas bendras būsenos valdymas ir paveldėjimas.