Sobes.tech
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.