Junior — Middle
Kas massiivi elementidele juurdepääsu operaatorit kasutades kaitseb piiride ületamise eest?
sobes.tech AI
Vastus AI-lt
Swiftis, massiivi elementidele juurdepääsu operaator (näiteks array[index]) ei taga kaitset ülepiiride. Kui indeks ületab massiivi piirid, tekitab rakendus jooksuaegse vea ja sulgub ootamatult.
Turvalise juurdepääsu jaoks saab kasutada meetodeid, mis tagastavad valikulise väärtuse, näiteks laiendust indeksikontrolliga:
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, turvaline
Seega, standardoperaator ei kaitse, ja arendaja peab ise kontrollima piire.