Junior
Ko nozīmē kopijas pārraide?
sobes.tech AI
Atbilde no AI
Kad pārsūtītu ar kopiju (pass by value) uz funkciju, tiek kopija no mainīgā vērtības, nevis atsauce uz oriģinālu. Izmaiņas, kas veiktas parametrā funkcijas iekšpusē, neietekmē ārējo mainīgo.
Swift valodā pēc noklusējuma tiek izmantota kopijas pārsūtīšana struktūrām un enumerācijām. Klases gadījumā — pārsūtīšana ar atsauci (pass by reference), bet šajā gadījumā tiek pārsūtīta paša atsauces kopija, ne objekts.
Piemērs Swift:
// Customer struktūra
struct Customer {
var name: String
}
// Funkcija, kas maina Customer tipa parametru
func changeCustomerName(customer: Customer) {
var modifiedCustomer = customer // Tiek izveidota struktūras kopija
modifiedCustomer.name = "Jane"
print("Funkcijas iekšpusē: \(modifiedCustomer.name)") // Izvade: Funkcijas iekšpusē: Jane
}
var myCustomer = Customer(name: "John")
print("Pirms funkcijas: \(myCustomer.name)") // Izvade: Pirms funkcijas: John
changeCustomerName(customer: myCustomer)
print("Pēc funkcijas: \(myCustomer.name)") // Izvade: Pēc funkcijas: John - oriģinālā vērtība nav mainījusies
Galvenais punkts: funkcija strādā ar vietējo datu kopiju.