Swift-də açılış necə həyata keçirilir (seçimlər, müqavilələr və digər mexanizmlər)?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də seçimlər (Optional) T tipində bir dəyər və ya nil saxlaya bilən bir tiplərdir; burada nil, dəyərin mövcud olmadığını göstərir.
Seçimlərlə işləmək üçün əsas mexanizmlər:
-
Seçim bağlama (
if let,guard let): Seçimdən təhlükəsiz dəyər çıxarma.if let: Əgər seçim dəyər saxlayırsa, onu müvəqqəti sabit və ya dəyişənə təyin edir. Bu halda kod bloku yalnız icra olunur.let optionalString: String? = "Hello" if let unwrappedString = optionalString { // unwrappedString `String` tipindədir }guard let: Dəyəri çıxarır. Əgər seçimnildirsə,elsebloku icra olunur (adətən, cari scope-dan çıxmaq üçün). Əgər dəyər uğurla çıxarılıbsa,guard-dan sonra cari scope-də mövcuddur.func processString(_ optionalString: String?) { guard let unwrappedString = optionalString else { return // Funksiyadan çıx } // unwrappedString burada `String` tipindədir }
-
Seçim zənciri (
?): Seçimeldəki xüsusiyyətləri, metodları və indeksləri çağırmağa imkan verir. Əgər zəncirin hər hansı mərhələsində seçimnil-dirsə, bütün zəncir kəsilir və nəticənilehtiva edən seçim olur.class Person { var job: Job? } class Job { var salary: Double? } let person: Person? = Person() person?.job = Job() let salary = person?.job?.salary // salary `Double?` tipindədir -
Məcburi çıxarış (
!): Təhlükəsiz olmayan dəyər çıxarışıdır. Əgər seçimnil-dirsə, icra zamanı xəta (crash) baş verir. Çox ehtiyatla istifadə edilməlidir, yalnız seçimnilolmadığına əmin olunduqda.let requiredString: String! = "Must be present" // İmplicit çıxarış let unwrappedString = requiredString! // Məcburi çıxarış let dangerousOptional: String? = nil // let crash = dangerousOptional! // Xətaya səbəb olacaq -
Null birləşdirmə operatoru (
??): Əgər seçimnil-dirsə, standart dəyər təqdim edir.let optionalValue: Int? = nil let definiteValue = optionalValue ?? 0 // definiteValue 0 olacaq -
İmplicitly Unwrapped Optionals (
!): Avtomatik olaraq istifadə zamanı çıxarılır.!ilə elan edilir. Dəyər ilk istifadə etməzdən əvvəl təyin ediləcəyinə zəmanət verilir, lakin başlanğıcda deyil (məsələn, IBOutlets). Əldə ediləndə, əgər dəyərnil-dirsə, icra zamanı xəta baş verir.var button: UIButton! // ViewDidLoad-də təyin ediləcək // button.setTitle("Tap me", for: .normal) // İstifadə zamanı avtomatik çıxarış
"Kontraktlar" bu kontekstdə Swift-də ayrıca dil mexanizmi deyil, digər dillərdəki kontraktlara bənzər. Swift, tip sistemi və giriş nəzarəti vasitəsilə təhlükəsizliyi təmin edir, bu da niyyətləri açıq ifadə etməyə və xətaları qarşısını almağa kömək edir. Seçimlər "kontrakt" kimi xidmət edir, dəyərin mövcud olmama ehtimalını göstərir.