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.