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.