Junior
Swift-dən seçimləri çıxarsanız nə baş verər?
sobes.tech Süni İntellekt
AI-dan cavab
Bu, kodun təhlükəsizliyinə əhəmiyyətli dərəcədə mənfi təsir göstərə bilərdi. Bir çox əməliyyat potensial olaraq təhlükəsiz olmayan hala gələrdi, çünki tərtibçi dəyərin mövcudluğunu təmin edə bilməzdi.
- Optional zəncirləmə (
?) və Zorunlu açma (!) silinərdi. Optional-lərlə işləmək üçün sintaksis etibarsız olardı. nilüçün davamlı yoxlamalar lazım olardı. İnkişaf etdiricilər hər bir əməliyyat üçün əl iləifşərtləri yazmalı olardı, bu da kodun təkrarlanmasını və mürəkkəbliyini əhəmiyyətli dərəcədə artırardı.- Xəta riskinin artması. Kompilyator dəyərin mövcudluğu barədə zəmanət vermədiyi üçün,
nil-ə giriş cəhdləri iş vaxtı xətasına səbəb olardı. - Asinxronluq üçün şık həllərin olmaması.
nililə nəticələnə bilən asinxron əməliyyatların idarə olunması çətinləşərdi. - Objective-C API ilə işləmək çətinləşərdi. Objective-C metodlarının çoxu uğursuzluğu və ya dəyərin olmamasını göstərmək üçün
nilqaytarır. İnteroperabilitet daha az təhlükəsiz olardı.
Hipotetik olaraq, əvvəl və sonra kod nümunəsi:
Əvvəl:
var optionalString: String? = "Hello"
let length = optionalString?.count // Optional zəncirləmə
Sonra (hipotetik):
var nonOptionalString: String // İndi bütün dəyişənlər başlanğıcda dəyər almalı və ya açıq şəkildə yoxlanmalıdır
var potentiallyNilStringFromSomewhere: String
// Optional zəncirləmə yerinə, belə yazmaq lazım olardı:
if someFunctionCouldReturnNil() {
// Xəta ilə işləmə
} else {
potentiallyNilStringFromSomewhere = ... // Dəyər təyin et
let length = potentiallyNilStringFromSomewhere.count // Əgər dəyər həqiqətən `nil` olsa, potensial crash
}
// Yaxud belə, əgər `nil` hələ də dilə daxil olsa, amma tərtibçi dəstəyi olmasa:
if potentiallyNilStringFromSomewhere != nil {
let length = potentiallyNilStringFromSomewhere!.count // Riskli zorunlu çıxarış
} else {
// `nil`-ə işləmə
}
Beləliklə, kod iş vaxtında daha çox xətaya meylli olar, daha az oxunaqlı və daha çətin saxlanardı. Optional-lər Swift-in əsas mexanizmlərindən biridir və tip təhlükəsizliyini təmin etmək və Null Pointer Exception-larını qarşısını almaq üçün istifadə olunur.