Sobes.tech
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.