Sobes.tech
Junior

Nima uchun opsionallar va ular Swift tilida qanday rol o'ynaydi?

sobes.tech AI

AIdan javob

Swift'tə opsiyonel, dəyər saxlaya bilən və ya saxlaya bilməyən (nil ola bilən) bir növdür.

Opsiyonellərin rolları:

  • Dəyərin olmamasını idarə etmək (nil təhlükəsizliyi).
  • İcra zamanı nil-ə girişdəki səhvlərin qarşısını almaq (crash).
  • Kodda dəyərin itə biləcəyi yerləri aydın şəkildə müəyyən etmək.

Əsas anlayışlar:

  • Opsiyonel elan: ValueType? və ya Optional<ValueType>
  • nil təyin etmək: bir opsiyonelə nil təyin etmək mümkündür.
  • Zorunlu açma (!): dəyəri çıxarır, əgər mövcuddursa, yoxsa ölümcül səhv yaradır.
  • Opsiyonel bağlama (if let, guard let): dəyəri təhlükəsiz şəkildə çıxarır, əgər nil deyilsə, müvəqqəti sabit və ya dəyişən yaradır.
  • Opsiyonel zənciri (?.): metodları çağırmağa, xüsusiyyətlərə və ya indekslərə təhlükəsiz giriş imkanı verir.
  • nil ilə birləşdirmə operatoru (??): opsiyonel nil olarsa, standart dəyər təqdim edir.

İstifadə nümunələri:

// Opsiyonel Int elan etmək
var age: Int?

// Dəyər təyin etmək
age = 30

// Zorunlu açma (təhlükəsiz deyil, əgər age == nil)
// let unwrappedAge = age!

// if let ilə opsiyonel bağlama
if let currentAge = age {
    print("Yaş: \(currentAge)") // Əgər age nil deyilsə, işləyəcək
} else {
    print("Yaş məlum deyil") // Əgər age nil olarsa, işləyəcək
}

// Opsiyonel zənciri
struct Person {
    var name: String
    var address: Address?
}

struct Address {
    var street: String
}

var person: Person? = Person(name: "Alice", address: Address(street: "Main St"))

// Opsiyonel zənciri ilə küçəni almağa cəhd
let streetName = person?.address?.street // streetName String?

// nil ilə birləşdirmə operatoru
let displayedStreet = streetName ?? "Naməlum küçə"
print(displayedStreet) // "Main St" çap edəcək