Sobes.tech
Junior

Co znamená přenos kopie?

sobes.tech AI

Odpověď od AI

Při předání hodnotou (pass by value) do funkce je předána kopie hodnoty proměnné, nikoliv odkaz na originál. Změny provedené v parametru uvnitř funkce neovlivní původní proměnnou mimo ni.

Pro struktury a výčty ve Swiftu je výchozí způsob předávání kopírování. U tříd je předávání odkazem (pass by reference), ale v tomto případě je předávána kopie samotného odkazu, nikoliv objektu.

Příklad ve Swiftu:

// Struktura Customer
struct Customer {
    var jmeno: String
}

// Funkce měnící parametr typu Customer
func zmenitJmenoZakaznika(zakaznik: Customer) {
    var upravenyZakaznik = zakaznik // Vytvoří se kopie struktury
    upravenyZakaznik.jmeno = "Jane"
    print("Uvnitř funkce: \(upravenyZakaznik.jmeno)") // Výstup: Uvnitř funkce: Jane
}

var mujZakaznik = Customer(jmeno: "John")
print("Před funkcí: \(mujZakaznik.jmeno)") // Výstup: Před funkcí: John

zmenitJmenoZakaznika(zakaznik: mujZakaznik)

print("Po funkci: \(mujZakaznik.jmeno)") // Výstup: Po funkci: John - původní hodnota se nezměnila

Klíčový bod: funkce pracuje s lokální kopií dat.