Sobes.tech
Junior

Swift-те жинақтар туралы және олардың ерекшеліктері туралы айтыңыз.

sobes.tech AI

AI-дан жауап

Swift үш негізгі кірістірілген жинақтарды ұсынады: Тізімдер (Arrays), Жинақтар (Sets) және Сөздіктер (Dictionaries). Барлығы олар var немесе let арқылы жарияланғанына байланысты өзгермелі немесе өзгермейтін болуы мүмкін және олар Жалпы Типтер (Generic Types) болып табылады, бұл кез келген типтегі элементтерді сақтау мүмкіндігін береді, егер коллекциядағы барлық элементтердің бірдей типі болса.

Тізімдер (Arrays)

  • Бір типтегі элементтердің реттелген жиынтығы.
  • Элементтерге индекс арқылы қол жеткізу.
  • Қайталаушы элементтер болуы мүмкін.
// Бос жолдар тізімі
var strings: [String] = []

// Бүтін сандар тізімі
let numbers = [1, 2, 3, 4, 5]

// Элемент қосу
strings.append("Hello")

// Индекс бойынша қол жеткізу
let firstElement = numbers[0] // 1

Жинақтар (Sets)

  • Ұйымдастырылмаған бір типтегі бірегей элементтердің жиынтығы.
  • Элементтер хештелуі керек (яғни, Hashable протоколына сәйкес болуы керек).
  • Бірегейлікті тексеру және жылдам іздеу үшін пайдаланылады.
// Бос бүтін сандар жиынтығы
var uniqueNumbers: Set<Int> = []

// Тізімдер жиынтығы
let colors: Set = ["red", "green", "blue"]

// Элементті қосу
uniqueNumbers.insert(10) // Егер 10 саны жоқ болса ғана қосады

// Бар-жоғын тексеру
let hasRed = colors.contains("red") // шын

Сөздіктер (Dictionaries)

  • Ұйымдастырылмаған "кілт-бағдар" жұптарының жиынтығы, мұнда кілттер бірегей.
  • Кілттер хештелуі керек.
  • Кілт бойынша мәндерді жылдам іздеу үшін пайдаланылады.
// Кілттері жолдар, мәндері бүтін сандар болатын бос сөздік
var ages: [String: Int] = [:]

// Қалалар мен олардың халқы
let population = ["Moscow": 12_600_000, "Saint Petersburg": 5_400_000]

// Мәнді қосу немесе жаңарту
ages["Alice"] = 30

// Кілт бойынша мәнге қол жеткізу (опционалды)
let moscowPopulation = population["Moscow"] // Optional(12600000)

// Элементті жою
ages["Alice"] = nil

Артықшылықтары:

  • Тип қауіпсіздігі: Swift барлық элементтердің бір типте болуын талап етеді.
  • Тип енгізу: Көп жағдайда компилятор автоматты түрде элементтердің типін анықтай алады.
  • Итерация: Барлық коллекциялар for-in циклін пайдаланып қайталанады.
  • Протоколдар: Коллекциялар әртүрлі протоколдарға сәйкес келеді, мысалы, Collection, Sequence, MutableCollection. Set және Dictionary кілттері Hashable талап етеді.
  • Өнімділік: Swift коллекциялармен әртүрлі операцияларды өнімділік үшін оңтайландырады.