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, უსაფრთხოდ

ამ გზით, სტანდარტული ოპერატორი არ იცავს, და შემქმნელმა უნდა აკონტროლოს საზღვრები.