- Published on
Swiftda metodlar
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Swiftda class ichida e'lon qilingan funksiya metod deyiladi. Masalan,
class Person {
. . .
// metodlarni e'lon qilish
func greet() {
// metod tanasi
}
}
Bu yerda greet() β Person classi ichida e'lon qilingan metod. Metodlar haqida o'rganishdan oldin swiftdagi class va struct qanday ishlashini bilib olish kerak.
Misol:
Yuqoridagi misolda Person classi ichida greet() nomli metod yaratdik. Bu yerda nick obyekti orqali metodga murojaat qildik.
// metodga murojaat
nick.greet()
greet() metodi shunchaki "Salom!" matnini chop etadi.
Misol:
Yuqoridagi misolda Hall nomli class yaratdik, uning ikkita metodi bor:
calculateArea()β xonaning yuzasini hisoblaydicalculateVolume()β xonaning hajmini hisoblaydi
Bu metodlar class ichida e'lon qilingani uchun ularga hall1 obyekti orqali murojaat qildik.
hall1.calculateArea()
hall1.calculateVolume()
Static metodlar
Oldingi misollarda metodlarga obyekt orqali murojaat qilgan edik. Ammo obyekt yaratmasdan ham murojaat qilinadigan metodlar mavjud.
Bunday metodlar static metodlar deyiladi. Swiftda static metod yaratish uchun static kalit so'zidan foydalanamiz. Masalan,
class Calculator {
// static metod
static func add() {
...
}
}
Bu yerda add() β static metod.
Static metodga murojaat qilish uchun klass nomidan foydalanamiz. Masalan,
// static metodga murojaat
Calculator.add()
Misol:
Yuqoridagi misolda Calculator nomli class yaratdik. Class ichida static metod: add() va non-static metod: multiply() mavjud.
Bu yerda:
Calculator.add()β static metod, klass nomi orqali chaqiriladiobj.multiply()β non-static metod, obyekt orqali chaqiriladi
Static metod β klass turiga tegishli (obyekt emas), shuning uchun ularga klass nomi orqali murojaat qilamiz.
Xuddi shunday,
structichida ham static metodlar yaratish mumkin. Ularga struct nomi orqali murojaat qilinadi.
Metodlarda self propertysi
Ba'zan property nomi va metod parametri bir xil bo'lishi mumkin. Masalan,
var physics = 0
func checkEligibility(physics: Int) {
...
}
Bu yerda property va metod parametri bir xil nomga ega: physics.
Bunday holatlarda noaniqlik yuzaga kelishi mumkin. Ularni farqlash uchun self propertysi ishlatiladi. self β metoddagi joriy obyektga murojaat qiladi.
Misol:
Yuqoridagi misolda property va metod parametri uchun bir xil physics nomini ishlatdik.
Ularni farqlash uchun checkEligibility() metodi ichida self propertysi ishlatildi:
if (self.physics < physics) {
...
}
Bu yerda:
self.physicsβstudent1obyektining propertysi, qiymati28physicsβ metod parametri, qiymati50
Shart (28 < 50) bajarilgani uchun if ichidagi kod ishlaydi.
Mutating metodlar
Swiftda class yoki struct ichidagi propertylarni metodlar ichidan o'zgartira olmaymiz. Masalan,
struct Employee {
var salary = 0.0 // maosh
...
func salaryIncrement() {
// Xato kod
salary = salary * 1.5
}
}
Bu yerda struct β value type bo'lgani uchun salary qiymatini o'zgartirishga urinish xatoga olib keladi.
Ammo value type propertylarini metod ichidan o'zgartirish kerak bo'lsa, metod e'lon qilishda mutating kalit so'zini ishlatishimiz kerak.
Misol:
Yuqoridagi misolda Employee nomli struct yaratdik. E'tibor bering:
mutating func salaryIncrement(increase: Int) {
// salary propertyni o'zgartirish
salary = salary + increase
...
}
mutating kalit so'zi struct propertylarini metod ichida o'zgartirish imkonini beradi.
Birinchi masalaning yechimi
Keling, birinchi masala "Oddiy metod" ni birga yechib ko'ramiz:
1-qadam: Masalani tushunish
Calculator classida multiply() methodi bo'lsin:
- Ikkita Int parametr qabul qiladi
- Ularni ko'paytirib qaytaradi
2-qadam: Yechim algoritmi
- Parametrlarni ko'paytiramiz
- Natijani qaytaramiz
3-qadam: Kodni yozamiz
Natija: Oddiy metodni to'g'ri yaratdik va test qildik!