Sobes.tech
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.