Junior
Ką reiškia kopijos perdavimas?
sobes.tech AI
Atsakymas iš AI
Kai perduodama per kopiją (pass by value) funkcijai, perduodama kopija kintamojo reikšmės, o ne nuoroda į originalą. Pakeitimai, atlikti parametre funkcijos viduje, nepaveikia išorinio kintamojo.
Swift kalboje struktūroms ir išvardijimams naudojamas numatytasis kopijos perdavimas. Klasėms — perdavimas nuoroda (pass by reference), tačiau šiuo atveju perduodama pačios nuorodos kopija, ne objekto.
Pavyzdys Swift:
// Customer struktūra
struct Customer {
var name: String
}
// Funkcija, keičianti Customer tipo parametrą
func changeCustomerName(customer: Customer) {
var modifiedCustomer = customer // Sukuriama struktūros kopija
modifiedCustomer.name = "Jane"
print("Funkcijos viduje: \(modifiedCustomer.name)") // Išvestis: Funkcijos viduje: Jane
}
var myCustomer = Customer(name: "John")
print("Prieš funkciją: \(myCustomer.name)") // Išvestis: Prieš funkciją: John
changeCustomerName(customer: myCustomer)
print("Po funkcijos: \(myCustomer.name)") // Išvestis: Po funkcijos: John - originali reikšmė nepasikeitė
Svarbus aspektas: funkcija dirba su vietine duomenų kopija.