Sobes.tech
Junior

Mit jelent a másolat szerinti átadás?

sobes.tech MI

Válasz az MI-től

Amikor pass by value módszerrel adunk át egy függvénynek, akkor a változó értékének másolatát adjuk át, nem az eredeti referencia. A függvényen belüli módosítások nem befolyásolják a külső változót.

Swift-ben az alapértelmezett átadás struktúrák és enumerációk esetén a másolat alapú átadás. Osztályok esetén referencia szerinti átadás történik, de ebben az esetben a referencia másolatát adjuk át, nem az objektumot.

Swift példával:

// Customer struktúra
struct Customer {
    var name: String
}

// Olyan függvény, amely módosítja a Customer típusú paramétert
func changeCustomerName(customer: Customer) {
    var modifiedCustomer = customer // A struktúra másolata jön létre
    modifiedCustomer.name = "Jane"
    print("Függvényen belül: \(modifiedCustomer.name)") // Kimenet: Függvényen belül: Jane
}

var myCustomer = Customer(name: "John")
print("Függvény előtt: \(myCustomer.name)") // Kimenet: Függvény előtt: John

changeCustomerName(customer: myCustomer)

print("Függvény után: \(myCustomer.name)") // Kimenet: Függvény után: John - az eredeti érték nem változott

Kulcsfontosságú: a függvény a helyi másolatával dolgozik az adatokból.