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