Sobes.tech
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-и истинодӣ - барои объектҳои мураккаб, ки ниёз ба ҳолати умумӣ ва тақлид доранд.