Sobes.tech
Intern

Wat zijn datatypes en welke bestaan er?

sobes.tech AI

Antwoord van AI

Gegevenstypen bepalen de set mogelijke waarden en operaties die erop kunnen worden uitgevoerd. In Swift worden ze onderverdeeld in Value Types en Reference Types.

Value Types:

  • Waarden worden gekopieerd bij toewijzing of doorgeven aan een functie.
  • Elke variabele of constante bewaart een eigen, onafhankelijke kopie van de gegevens.
  • Wijzigingen in één kopie beïnvloeden de andere niet.

Voorbeelden van Value Types:

  • Structuren (struct)
  • Enumeraties (enum)
  • Tuples (tuple)
  • Basis types: Int, Double, Bool, String, arrays (Array), woordenboeken (Dictionary), verzamelingen (Set).
// Voorbeeld van Value Type: struct
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 krijgt een kopie van p1
p2.x = 10 // Wijziging in p2 beïnvloedt p1 niet

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

Reference Types:

  • Waarden worden niet gekopieerd. Bij toewijzing of doorgeven
  • aan een functie wordt een verwijzing naar hetzelfde gegevensobject in het geheugen doorgegeven.
  • Meerdere variabelen of constanten kunnen naar hetzelfde object verwijzen.
  • Wijzigingen via één verwijzing zijn zichtbaar via alle andere.

Voorbeelden van Reference Types:

  • Klassen (class)
  • Functies (func)
  • Closures (closure)
// Voorbeeld van Reference Type: class
class Circle {
    var radius: Double

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

var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 verwijst naar hetzelfde object als c1
c2.radius = 10.0 // Wijziging in c2 beïnvloedt c1

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

Tabel met hoofdtypen:

Categorie Type(n) Value/Reference Type Beschrijving
Gehele getallen Int, UInt, Int8, UInt8 enz. Value Hele getallen van verschillende grootte, met en zonder teken
Drijvende kommagetallen Float, Double Value Getallen met een decimale component
Booleans Bool Value Logische waarden (true of false)
Strings String Value Sequentie van tekens
Collecties Array, Dictionary, Set Value Geordende/ongeordende verzamelingen van eentypige elementen
Structuren struct Value Samengestelde, gebruikersgedefinieerde types met gerelateerde waarden
Enumeraties enum Value Definiëren een algemene type voor een groep gerelateerde waarden
Tuples (value1, value2, ...) Value Groeperen meerdere waarden in één samengesteld type
Klassen class Reference Samengestelde, gebruikersgedefinieerde types met overerving en referentiegedrag
Functies () -> Void, (Int) -> String enz. Reference Uit te voeren codeblokken
Closures { (parameters) -> return type in code } Reference Zelfstandige codeblokken die kunnen worden doorgegeven en gebruikt
Opties Type? (synthax suiker voor Optional<Type>) Value Vertegenwoordigt ofwel een waarde van Type of afwezigheid ervan (nil)

De keuze tussen Value en Reference Types hangt af van de taak: Value Types zijn beter voor kleine gegevens en voor threadveiligheid, Reference Types voor complexe objecten die gedeelde toestand en overerving vereisen.