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.