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.