Sobes.tech
Intern

რა არის მონაცემთა ტიპები და რა არსებობს მათ შორის?

sobes.tech AI

პასუხი AI-სგან

Маалымат түрлөрү мүмкүн болгон маанилердин топтомун жана алардын үстүндө иштөөнүн ыкмаларын аныктайт. Swiftте алар Value Types жана Reference Types деп бөлүнөт.

Value Types (маалымат түрлөрү):

  • Арзиштер белгилөө же өткөрүп берүү учурунда көчүрүлөт.
  • Ар бир өзгөрмө же константа өзүнүн көзкарандысыз көчөсүн сактайт.
  • Бир көчөдө жасалган өзгөртүүлөр башка көчөлөргө таасир этпейт.

Мисалдар Value Types:

  • Структуралар (struct)
  • Энуми (enum)
  • Тупл (tuple)
  • Негизги түрлөрү: Int, Double, Bool, String, массивдер (Array), сөздүктөр (Dictionary), топтомдор (Set).
// Мисал Value Type: 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)

Reference Types ( шилтемелүү түрлөр):

  • Маалыматтар көчүрүлбөйт. Белгилөө же өткөрүп берүү учурунда
  • бир эле экземплярга шилтеме берилет.
  • Бир нече өзгөрмө же константа бир эле экземплярга шилтеме жасай алат.
  • Бир шилтемедеги өзгөртүүлөр бардык шилтемелерде көрүнөт.

Мисалдар Reference Types:

  • Класстар (class)
  • Функциялар (func)
  • Жабдыктар (closure)
// Мисал Reference Type: class
class Circle {
    var radius: Double

    init(radius: Double) {
        self.radius = radius
    }
}

var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 ошол эле экземплярга шилтеме
c2.radius = 10.0 // өзгөртүү c1ге таасир этет

print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0

Негизги түрлөрү боюнча таблица:

Категория Төрү(лөрү) Value/Reference Type Түшүндүрмө
Бүтүн сандар Int, UInt, Int8, UInt8 жана башка Value Ар кандай өлчөмдөрдө, белгилүү жана белгилүү эмес сандар
Уламдуу сандар Float, Double Value Дробдуу бөлүгү бар сандар
Логикалык Bool Value Логикалык маанилер (true же false)
Жолдар String Value Белгилердин тизмеси
Коллекциялар Array, Dictionary, Set Value Тартиптелген же тартиптелбеген коллекциялар
Структуралар struct Value Колдонуучу түзгөн түрлөр, байланышкан маанилерди сактайт
Энуми enum Value Топтогон маанилер үчүн жалпы түр аныктайт
Тупл (value1, value2, ...) Value Бир нече маанини бир топко топтоо
Класстар class Reference Колдонуучу түзгөн, мурас алууга жана шилтемелүү жүрүм-турумга ээ түрлөр
Функциялар () -> Void, (Int) -> String жана башка Reference Ишке ашырылуучу код блоктору
Жабдыктар { (parameters) -> return type in code } Reference Өзүнчө код блоктору, которулуп жана колдонулушу мүмкүн
Опционалдар Type? (синтаксикалык шек Optional<Type> үчүн) Value Нерсе Type маанини же жоктугун көрсөтөт (nil)

Value жана Reference түрлөрүнүн тандоосу тапшырмага жараша болот: Value түрлөрү кичинекей маалыматтар жана агым коопсуздугун камсыз кылуу үчүн артыкчылыктуу, Reference түрлөрү — татаал объекттер үчүн, жалпы абал жана мурас алуу талап кылынат.