Middle
Dəyər tipi (value type) referans tipi (reference type) ilə əlaqəli olduqda, bu nə deməkdir?
sobes.tech Süni İntellekt
AI-dan cavab
Dəyər tipi təyin etmə və ya funksiyaya ötürülərkən kopyalanır, referans tipi isə referans vasitəsilə ötürülür, yəni mövcud nümunəyə işarə edən göstərici kopyalanır.
Dəyər Növləri (Value Types):
- Struktur (struct)
- Enum (enum)
- Tuple (tuple)
- Əksər əsas tiplər (Int, String, Bool, Array, Dictionary, Set və s.)
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p1-in dəyəri p2-yə kopyalanır
p2.x = 10
// p1.x hələ də 1, p2.x isə 10 oldu
print("p1: \(p1.x)")
print("p2: \(p2.x)")
Referans Növləri (Reference Types):
- Siniflər (class)
- Funksiyalar (closure)
class Coordinate {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2 eyni nümunəyə istinad edir
c2.x = 10
// c1.x də 10 oldu
print("c1: \(c1.x)")
print("c2: \(c2.x)")
Əsas fərqlər:
| Xüsusiyyət | Dəyər Növü (Value Type) | Referans Növü (Reference Type) |
|---|---|---|
| Təyin etmə | Dəyərin kopyası | Referansın (göstəricinin) kopyası |
| Yaddaş | Yığımda ayrılır (sadə hallarda) | Yığımda ayrılır |
| Paylaşım | Hər dəyişən öz nüsxəsinə malikdir | Bir neçə dəyişən eyni nümunəyə istinad edə bilər |
| Dəyişiklik | Dəyişiklik üçün nüsxəni dəyişmək lazımdır | Bir referans vasitəsilə edilən dəyişikliklər hamıya görünür |
iOS inkişafında hər iki tip geniş istifadə olunur. Onların fərqlərini bilmək, hər vəzifə üçün uyğun tipi seçməyə və istənməyən yan təsirləri qarşısını almağa imkan verir, xüsusən də dəyişkən məlumatlarla işləyərkən.