Junior
Swift-də opsionalardan nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Seçimli dəyişənə müəyyən bir növün dəyəri və ya nil (dəyər yoxluğu) saxlamaq imkanı verir. Onlar, dəyərin mövcud olmaya biləcəyi halları açıq şəkildə idarə etmək üçün istifadə olunur və digər dillərdə rast gəlinən "null pointer" (işə salınma zamanı çökmələr) səhvlərindən qaçınmağa kömək edir.
Seçimli dəyişənlərin istifadəsinin əsas üstünlükləri:
- Təhlükəsizlik: Swift kompilyatoru
nil-in açıq şəkildə işlənməsini tələb edir, bu da işə salınma zamanı səhvlərin ehtimalını azaldır. - Aydınlıq: Növün seçimli olması onun elanında (
?) açıq şəkildə göstərilir, bu da kodu daha anlaşılan edir.
Seçimli dəyişənlərlə işləmə üsulları:
- Məcburi açma (Forced Unwrapping): Seçimli dəyişənin ardınca ünlem işarəsi (
!) istifadə olunur. Təhlükəlidir, əgər dəyərnil-dirsə, səhv baş verər.var optionalString: String? = "Hello" let unwrappedString = optionalString! // Təhlükəlidir, əgər optionalString nil-dirsə - Seçimli bağlama (Optional Binding):
if letvə yaguard letistifadə edilərək, dəyər təhlükəsiz şəkildə çıxarılır, əgər mövcuddursa.var optionalString: String? = "Hello" if let safeString = optionalString { // safeString, optionalString nil deyilsə, "Hello"-yu əhatə edir print(safeString) } else { // optionalString nil-dir print("Dəyər nil-dir") } func processString(_ optionalString: String?) { guard let safeString = optionalString else { // optionalString nil-dir, funksiyadan çıxırıq print("Dəyər nil-dir, çıxış") return } // safeString, "Hello"-yu əhatə edir print(safeString) } - Seçimli zəncir (Optional Chaining): Metodları təhlükəsiz şəkildə çağırmağa, xüsusiyyətlərə və ya indekslərə müraciət etməyə imkan verir. Əgər zəncirin hər hansı bir elementi
nil-dirsə, bütün zəncirnilqaytarır.class MyClass { var property: String? } var myInstance: MyClass? = MyClass() myInstance?.property = "Value" // Əgər myInstance nil deyilsə, xüsusiyyətə dəyər təyin edir let retrievedValue = myInstance?.property // retrievedValue String? - Nil-ə birləşdirmə operatoru (Nil-Coalescing Operator): Əgər seçimli
nil-dirsə, standart dəyər təqdim edir.let optionalValue: String? = nil let defaultValue = "Default" let finalValue = optionalValue ?? defaultValue // finalValue "Default" olacaq