Intern
Навъҳои маълумот чист ва кадомҳоянд?
sobes.tech AI
Ҷавоб аз AI
Типҳои маълумот маҷмӯаи арзишҳои имконпазир ва амалҳоро муайян мекунанд, ки метавон дар онҳо иҷро кард. Дар Swift онҳо ба Types-и арзишӣ ва Types-и истинодӣ тақсим мешаванд.
Types-и арзишӣ (Value Types):
- Арзишҳо дар вақти таъин кардан ё интиқол ба функсия нусхабардорӣ мешаванд.
- Ҳар як тағйирёбанда ё константа нусхаи мустақилонаи маълумотро нигоҳ медорад.
- Тағйирот дар як нусха ба дигарон таъсир намерасонад.
Масалҳои Types-и арзишӣ:
- Сохторҳо (
struct) - Энуми (
enum) - Тупл (
tuple) - Типҳои асосӣ:
Int,Double,Bool,String, массивҳо (Array), луғот (Dictionary), маҷмӯъҳо (Set).
// Масали Types-и арзишӣ: struct
struct Point {
var x: Int
var y: Int
}
var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 нусхаи p1 мегирад
p2.x = 10 // Тағйир додани p2 ба p1 таъсир намерасонад
print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)
Types-и истинодӣ (Reference Types):
- Арзишҳо нусхабардорӣ намешаванд. Дар вақти таъин кардан ё интиқол
- ба функсия, истинод ба ҳамон як намунаи маълумот дар ёдгирӣ дода мешавад.
- Баъзе тағйирёбандаҳо ё константаҳо метавонанд ба як намунаи ягона ишора кунанд.
- Тағйирот тавассути як истинод дар ҳама дигар истинодҳо дида мешавад.
Масалҳои Types-и истинодӣ:
- Классҳо (
class) - Функсияҳо (
func) - Қасдҳо (
closure)
// Масали Types-и истинодӣ: class
class Circle {
var radius: Double
init(radius: Double) {
self.radius = radius
}
}
var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 ба ҳамон намуна ишора мекунад, ки c1
c2.radius = 10.0 // Тағйир додани c2 ба c1 таъсир мерасонад
print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0
Таблица бо намудҳои асосӣ:
| Категория | Навъ(ҳо) | Types-и арзишӣ ё истинодӣ | Тавсиф |
|---|---|---|---|
| Суммавӣ | Int, UInt, Int8, UInt8 ва ғайра |
Арзишӣ | Суммавӣ бо андозаҳои гуногун, бо ё бе тамғаи манфӣ |
| Флотиандозӣ | Float, Double |
Арзишӣ | Суммавӣ бо қисми даҳонӣ |
| Булевӣ | Bool |
Арзишӣ | Арзишҳои мантиқӣ (true ё false) |
| Роҳҳо | String |
Арзишӣ | Тартиби рамзҳо |
| Коллексияҳо | Array, Dictionary, Set |
Арзишӣ | Коллексияҳои тартибдодашуда ё беназмшудаи унсурҳо |
| Сохторҳо | struct |
Арзишӣ | Навъҳои корбарии мураккаб, ки арзишҳои алоқамандро нигоҳ медоранд |
| Энуми | enum |
Арзишӣ | Тавсиф медиҳанд навъи умумӣ барои гурӯҳи арзишҳои алоқаманд |
| Тупл | (value1, value2, ...) |
Арзишӣ | Гурӯҳбандии чанд арзиш дар як навъи мураккаб |
| Классҳо | class |
Истинодӣ | Навъҳои корбарии мураккаб, ки тақлид кардан ва рафтори истинодиро дастгирӣ мекунанд |
| Функсияҳо | () -> Void, (Int) -> String ва ғайра |
Истинодӣ | Блокҳои иҷрои коди |
| Қасдҳо | { (parameters) -> return type in code } |
Истинодӣ | Блокҳои коди мустақил, ки метавонанд дода ва истифода шаванд |
| Опционалӣ | Type? (синтаксиси шакл барои Optional<Type>) |
Арзишӣ | Намоянда ё арзиши навъи Type, ё набудани он (nil) |
Интихоб байни Types-и арзишӣ ва истинодӣ вобаста ба вазифа аст: Types-и арзишӣ барои маълумоти хурд ва бехатарии рахи беҳтар, Types-и истинодӣ - барои объектҳои мураккаб, ки ниёз ба ҳолати умумӣ ва тақлид доранд.