Sobes.tech
Middle

Mi a különbség a tömb másolása és a struktúrák között Swiftben?

sobes.tech MI

Válasz az MI-től

Swiftben a tömbök (arrays) szerkezetek (struct).

Amikor egy tömböt másolunk, egy új példány jön létre az elemekből. Egy tömbben végzett módosítás nem befolyásolja a másikat.

var array1 = [1, 2, 3]
var array2 = array1 // Másolás történik
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

A Swiftben a szerkezetek (struct) érték típusok (value types). Amikor egy szerkezetet hozzárendel vagy átad egy függvénynek, egy új példány jön létre az adatokból. Egy szerkezet másolatán végzett módosítás nem befolyásolja a többi példányt.

struct Point {
    var x: Int
    var y: Int
}

var point1 = Point(x: 0, y: 0)
var point2 = point1 // Másolás történik
point2.x = 10
// point1.x = 0
// point2.x = 10

A különbség az, hogy a tömbök, mint szerkezetek, érték-típus viselkedést mutatnak másoláskor, teljes másolatot készítve az elemeikről. A szerkezetek általában szintén érték-típusok, és másoláskor új példányt hoznak létre a tulajdonságaikról. Ezért mindkét entitás (tömbök és szerkezetek) esetében érvényes a copy-by-value (érték szerinti másolás) szemantikája. A különbség az, hogy a tömb egy más értékeket tartalmazó tároló, amely lehet érték-típus vagy referencia-típus.