Intern
Mis on andmetüübid ja millised on olemas?
sobes.tech AI
Vastus AI-lt
Andmetüübid määratlevad võimalike väärtuste kogumi ja toimingud, mida nende üle saab teha. Swiftis jagunevad need Value Types ja Reference Types.
Value Types (väärtusetüübid):
- Väärtused kopeeritakse määramise või funktsioonile edastamise ajal.
- Iga muutuja või konstant hoiab oma sõltumatut andmekopejat.
- Ühe koopia muudatused ei mõjuta teisi.
Näited Value Types:
- Struktuurid (
struct) - Enumid (
enum) - Tupelid (
tuple) - Põhitüübid:
Int,Double,Bool,String, massiivid (Array), sõnastikud (Dictionary), komplektid (Set).
// Näide Value Type: struct
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 saab koopia p1-st
p2.x = 10 // Muudatused p2-s ei mõjuta p1-d
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)
Reference Types (viidatüübid):
- Väärtused ei kopeeru. Määramisel või edastamisel
- antakse viide samale andmekogumile mälus.
- Mitmed muutujad või konstantsed võivad viidata samale eksemplarile.
- Muudatused ühe viitega on nähtavad kõigis teistes viidetes.
Näited Reference Types:
- Klassid (
class) - Funktsioonid (
func) - Sulgud (
closure)
// Näide Reference Type: class
class Circle {
var radius: Double
init(radius: Double) {
self.radius = radius
}
}
var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 viitab samale eksemplarile nagu c1
c2.radius = 10.0 // Muudatused mõjutavad c1-d
print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0
Peamiste tüüpide tabel:
| Kategooria | Tüüp(s) | Value/Reference Type | Kirjeldus |
|---|---|---|---|
| Täisarvud | Int, UInt, Int8, UInt8 ja teised |
Value | Erineva suurusega täisarvud, märgiga või ilma |
| Ujuvpunktnumbrid | Float, Double |
Value | Arvud kümnendmurruga |
| Loogilised | Bool |
Value | Loogilised väärtused (true või false) |
| Ridad | String |
Value | Sõne järjestus |
| Kogumid | Array, Dictionary, Set |
Value | Järjestatud või mittejärjestatud kogumid sama tüüpi elementidega |
| Struktuurid | struct |
Value | Kasutaja defineeritud keerukad tüübid, mis hoiavad seotud väärtusi |
| Enumid | enum |
Value | Üldise tüübi määratlus seotud väärtuste grupile |
| Tupelid | (value1, value2, ...) |
Value | Mitme väärtuse ühendamine ühes struktuuris |
| Klassid | class |
Reference | Kasutaja defineeritud keerukad tüübid, mis toetavad pärandamist ja viidete käitumist |
| Funktsioonid | () -> Void, (Int) -> String ja teised |
Reference | Koodiplokid, mis täidavad funktsionaalsust |
| Sulgud | { (parameters) -> return type in code } |
Reference | Iseseisvad koodiplokid, mida saab edasi anda ja kasutada |
| Valikulisus | Type? (süntaktiline suhkur Optional<Type> jaoks) |
Value | Esindab kas väärtust tüüpi Type või selle puudumist (nil) |
Valiku tegemine Value ja Reference tüüpide vahel sõltub ülesandest: Value tüübid on sobivamad väikeste andmete ja voogude turvalisuse tagamiseks, Reference tüübid — keerukamate objektide jaoks, millel on vaja ühise oleku ja pärimise kontrolli.