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, უსაფრთხოდ
ამ გზით, სტანდარტული ოპერატორი არ იცავს, და შემქმნელმა უნდა აკონტროლოს საზღვრები.