Sobes.tech
Junior — Middle

Ar masyvo elementų prieigos operatoriaus naudojimas užtikrina apsaugą nuo išėjimo už ribų?

sobes.tech AI

Atsakymas iš AI

Swift'e, masyvo elementų prieigos operatorius (pavyzdžiui, array[index]) neužtikrina ribų peržengimo apsaugos. Jei indeksas viršija masyvo ribas, programa sukels veikimo metu klaidą ir netikėtai užsidarys.

Saugiai prieigai galima naudoti metodus, kurie grąžina pasirinktinę reikšmę, pavyzdžiui, išplėtimą su indekso patikra:

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, saugiai

Taip, standartinis operatorius neapsaugo, ir kūrėjas turi pats kontroliuoti ribas.