Sobes.tech
Intern

Дар бораи " интиқоли нусха" дар контексти барномасозӣ чӣ маъно дорад?

sobes.tech AI

Ҷавоб аз AI

"Пассаи ба арзиш" (pass-by-value) маънои он аст, ки дар вақти даъвати функсия ё метод, нусхаи арзиши тағйирёбанда дода мешавад, на худи тағйирёбанда. Ҳар гуна тағйирот дар ин аргумент дар дохили функсия/метод ба тағйирёбандаи аслӣ таъсир намерасонад.

Дар Swift, структураҳо (structs), enumerationҳо (enums) ва tuples (tuples) навъҳои арзишӣ (value types) мебошанд ва ба таври пешфарз бо нусха дода мешаванд. Классҳо (classes), closures ва функсияҳо навъҳои истинодӣ (reference types) мебошанд ва бо истинод дода мешаванд.

Масали пас аз арзиш дар Swift:

struct MyStruct {
    var value: Int
}

func modifyStruct(s: MyStruct) {
    var mutableS = s // Нусхаи s сохта мешавад
    mutableS.value = 20
    print("Дар дохили modifyStruct: \(mutableS.value)") // 20
}

var originalStruct = MyStruct(value: 10)
print("Пеш аз modifyStruct: \(originalStruct.value)") // 10
modifyStruct(s: originalStruct)
print("Пас аз modifyStruct: \(originalStruct.value)") // 10 (структураи аслӣ тағйир наёфтааст)

Дар ин мисол, функсия modifyStruct нусхаи originalStruct-ро мегирад. Тағйир додани mutableS.value дар дохили функсия ба originalStruct.value таъсир намерасонад.

Масали пас аз истинод (бо истифода аз класс):

class MyClass {
    var value: Int = 0
}

func modifyClass(c: MyClass) {
    c.value = 20
    print("Дар дохили modifyClass: \(c.value)") // 20
}

var originalClass = MyClass()
originalClass.value = 10
print("Пеш аз modifyClass: \(originalClass.value)") // 10
modifyClass(c: originalClass)
print("Пас аз modifyClass: \(originalClass.value)") // 20 (объекти аслӣ тағйир ёфт)

Ин ҷо, функсия modifyClass ба объект originalClass истинод мегирад. Тағйир додани c.value тавассути ин истинод, объектро тағйир медиҳад.