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.