- Published on
Swiftda Extension
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Bilimingizni sinab ko'ring!
20 ta savol Β· ~20 daqiqa
Swiftda mavjud turlarga yangi funksionallik qo'shishimiz mumkin. Bunga extension yordamida erishishimiz mumkin.
Extension e'lon qilish uchun extension kalit so'zidan foydalanamiz. Masalan,
// class ta'rifi
class Temperature {
...
}
// Temperature classining extension
extension Temperature {
// yangi metodlar qo'shish
}
Bu yerda extension kalit so'zi yordamida Temperature classining kengaytmasini yaratdik.
Endi extension ichida Temperature ga yangi funksionallik qo'shishimiz mumkin.
Misol:
Yuqoridagi misolda Temperature classining kengaytmasini yaratdik.
extension Temperature {
// Temperature classiga yangi metod qo'shish
func convert() {
var fahrenheit = (celsius * 1.8) + 32
...
}
}
Bu extension Temperature ga quyidagi funksionalliklarni qo'shadi:
convert()β haroratni selsiydan farengeytga o'zgartiradigan metodfahrenheitβ konvertatsiya natijasini saqlaydiganconvert()ichida e'lon qilingan o'zgaruvchi
Keyin Temperature ning temp1 nomli obyektini yaratdik va uni extension ichida yaratilgan metodga murojaat qilish uchun ishlatdik.
// class obyekti yordamida extension metodiga murojaat
temp1.convert()
Class ichida e'lon qilingan propertylar (
celsiuskabi) extensionda ham ishlatilishi mumkin.
Extensionda Computed property
Swiftda extensionlarga stored propertylar qo'sha olmaymiz. Masalan,
extension Circle {
// stored property
var radius: Int // xato kod
}
Ammo Swift extensionga computed property qo'shish imkonini beradi. Masalan,
extension Circle {
// computed property
var area: Double {
...
}
}
Bu yerda area β extension tanasida e'lon qilingan computed property.
Misol:
Yuqoridagi misolda Circle classining extension ini yaratdik, bu yerda area nomli computed property e'lon qildik.
Bu property radius qiymatiga asoslanib doiraning yuzasini hisoblab beradi.
var area: Double {
return 3.14 * radius * radius
}
Protocol Extension
Swiftda protocollarni ham kengaytirishimiz mumkin. Masalan,
Yuqoridagi misolda applyBrake() funksiyasini belgilaydigan Brake protocolini yaratdik.
Biz Brake protocolini kengaytirib, uning ichida applyBrake() funksiyasining tanasini e'lon qildik.
// protocolni kengaytirish
extension Brake {
func applyBrake() {
print("Tormoz bosildi")
}
}
Endi Car classi Brake protocoliga mos kelgani uchun:
class Car: Brake {
...
}
car1 obyekti yordamida kengaytirilgan protocolga murojaat qilishimiz mumkin.
// kengaytirilgan protocolga murojaat
car1.applyBrake()