Sobes.tech
Junior

Co oznacza transfer przez kopię?

sobes.tech AI

Odpowiedź od AI

Przy przekazywaniu przez kopię (pass by value) do funkcji, przekazywana jest kopia wartości zmiennej, a nie odwołanie do oryginału. Zmiany wprowadzone w parametrze wewnątrz funkcji nie wpływają na zmienną oryginalną poza funkcją.

Dla struktur i wyliczeń w Swift domyślnie stosuje się przekazywanie przez kopię. Dla klas — przekazywanie przez referencję (pass by reference), ale w tym przypadku przekazywana jest kopia samego odwołania, nie obiektu.

Przykład w Swift:

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

// Funkcja zmieniająca parametr typu Customer
func changeCustomerName(customer: Customer) {
    var modifiedCustomer = customer // Tworzy się kopia struktury
    modifiedCustomer.name = "Jane"
    print("Wewnątrz funkcji: \(modifiedCustomer.name)") // Wypisze: Wewnątrz funkcji: Jane
}

var myCustomer = Customer(name: "John")
print("Przed funkcją: \(myCustomer.name)") // Wypisze: Przed funkcją: John

changeCustomerName(customer: myCustomer)

print("Po funkcji: \(myCustomer.name)") // Wypisze: Po funkcji: John - wartość początkowa się nie zmieniła

Kluczowy aspekt: funkcja operuje na lokalnej kopii danych.