Programlamada bağlamında "kopya ile geçiş" ne anlama gelir?
sobes.tech yapay zeka
AI'dan gelen yanıt
"Kopya ile geçiş" (pass-by-value), bir fonksiyon veya metod çağrıldığında, değişkenin değerinin bir kopyasının iletildiği anlamına gelir ve değişkenin kendisi değil. Bu argüman üzerinde fonksiyon/metod içinde yapılan herhangi bir değişiklik, orijinal değişkeni etkilemez.
Swift'te, yapılar (structs), enum'lar (enums) ve tuple'lar (tuples) değer tipleri (value types) olup varsayılan olarak kopya ile geçirilirler. Sınıflar (classes), kapanışlar (closures) ve fonksiyonlar ise referans tipleri (reference types) olup referans ile geçirilirler.
Swift'te kopya ile geçiş örneği:
struct MyStruct {
var value: Int
}
func modifyStruct(s: MyStruct) {
var mutableS = s // s'nin bir kopyası oluşturulur
mutableS.value = 20
print("modifyStruct içinde: \(mutableS.value)") // 20
}
var originalStruct = MyStruct(value: 10)
print("modifyStruct öncesi: \(originalStruct.value)") // 10
modifyStruct(s: originalStruct)
print("modifyStruct sonrası: \(originalStruct.value)") // 10 (orijinal yapı değişmedi)
Bu örnekte, modifyStruct fonksiyonu originalStruct'in bir kopyasını alır. Fonksiyon içindeki mutableS.value değişikliği, originalStruct.value'u etkilemez.
Referans ile geçiş örneği (sınıf kullanılarak):
class MyClass {
var value: Int = 0
}
func modifyClass(c: MyClass) {
c.value = 20
print("modifyClass içinde: \(c.value)") // 20
}
var originalClass = MyClass()
originalClass.value = 10
print("modifyClass öncesi: \(originalClass.value)") // 10
modifyClass(c: originalClass)
print("modifyClass sonrası: \(originalClass.value)") // 20 (orijinal sınıf değişti)
Burada, modifyClass fonksiyonu originalClass nesnesine bir referans alır. c.value'yu bu referans üzerinden değiştirmek, orijinal nesneyi değiştirir.