Sobes.tech
Junior — Middle

Vai masīva elementu piekļuves operatora izmantošana nodrošina aizsardzību pret robežu pārkāpšanu?

sobes.tech AI

Atbilde no AI

Swift valodā piekļuves operators (piemēram, array[index]) nenodrošina aizsardzību pret pārsniegšanu. Ja indekss ir ārpus masīva robežām, lietojumprogramma izraisīs izpildes kļūdu un negaidīti aizvērsies.

Drošai piekļuvei var izmantot metodes, kas atgriež opcionalo vērtību, piemēram, paplašinājumu ar indeksa pārbaudi:

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, droši

Tādējādi standarta operators nepasargā, un izstrādātājam jāuzrauga robežas pats.