Sobes.tech
Junior — Middle

Swift tilida sinflarda obyektlarning holatini o'zgartiradigan metodlarni e'lon qilish mumkinmi?

sobes.tech AI

AIdan javob

Swiftda, ob'ektning holatini o'zgartiradigan metodlar mutating kalit so'zi bilan e'lon qilinadi, ammo bu faqat strukturalar va enumeratsiyalar (qiymat turlari) uchun. Klasslar (referens turlari) uchun, metodlar odatda ob'ektning xususiyatlarini o'zgartira oladi, qo'shimcha kalit so'zga ehtiyoj yo'q.

Ya'ni:

  • Klasslarda, mutating bo'lmagan metodlar bilan ob'ekt holatini o'zgartirish mumkin.
  • Strukturalar va enumeratsiyalarda, xususiyatlarni o'zgartiradigan metodlar mutating sifatida belgilanishi kerak.

O'zgartiruvchi metod bilan klass misoli:

class Counter {
    var count = 0
    func increment() {
        count += 1
    }
}

let counter = Counter()
counter.increment()
print(counter.count) // 1

mutating metod bilan struktur misoli:

struct Counter {
    var count = 0
    mutating func increment() {
        count += 1
    }
}

var counter = Counter()
counter.increment()
print(counter.count) // 1