Sobes.tech
Middle

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:

  1. 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çim nildirsə, else bloku 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
      }
      
  2. 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çim nil-dirsə, bütün zəncir kəsilir və nəticə nil ehtiva 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
    
  3. Məcburi çıxarış (!): Təhlükəsiz olmayan dəyər çıxarışıdır. Əgər seçim nil-dirsə, icra zamanı xəta (crash) baş verir. Çox ehtiyatla istifadə edilməlidir, yalnız seçim nil olmadığı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
    
  4. Null birləşdirmə operatoru (??): Əgər seçim nil-dirsə, standart dəyər təqdim edir.

    let optionalValue: Int? = nil
    let definiteValue = optionalValue ?? 0 // definiteValue 0 olacaq
    
  5. İ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ər nil-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.