Sobes.tech
Junior — Middle

Массивдин элементтерине кирүү операторун колдонуу чектен чыгып кетүүдөн коргоо камсыздайбы?

sobes.tech AI

AIден жооп

Swiftте, массивдин элементтерине кирүү оператору (мисалы, array[index]) чек арадан ашып кетүүнү коргоо менен камсыз кылбайт. Эгерде индекс массивдин чегинен чыгып кетсе, колдонмо иштөө учурунда ката чыгарып, күтүүсүздөн жабылат.

Коопсуз кирүү үчүн, индекстин текшерүүсү менен кеңейтүү сыяктуу, опционалдуу маанини кайтарган ыкмаларды колдонсо болот:

extension Array {
    func safeGet(index: Int) -> Element? {
        return indices.contains(index) ? self[index] : nil
    }
}

let arr = [1, 2, 3]
print(arr.safeGet(index: 5)) // nil, коопсуз

Ошентип, стандарттык оператор коргоо көрсөтпөйт, жана иштеп чыгуучу өз алдынча чек араларды көзөмөлдөшү керек.