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.