Sobes.tech
Junior — Middle

Оё имкон дорад, ки дар Swift методҳое эълон шаванд, ки ҳолати объектҳоро тағир медиҳанд?

sobes.tech AI

Ҷавоб аз AI

Дар Swift, усулҳое, ки ҳолати объектро тағйир медиҳанд, бо калидвожа mutating эълон мешаванд, аммо ин танҳо барои сохторҳо ва enumerationҳо (типы арзишӣ) дахл дорад. Барои синфҳо (типы истинодӣ), усулҳо ба таври стандартӣ метавонанд хусусиятҳои намунаҳоро тағйир диҳанд, бе калидвожаҳои иловагӣ.

Яъне:

  • Дар синфҳо, метавон усулҳоро эълон кард, ки ҳолати объектро тағйир медиҳанд, бе mutating.
  • Дар сохторҳо ва enumerationҳо, усулҳое, ки хусусиятҳоро тағйир медиҳанд, бояд ҳамчун mutating ишора карда шаванд.

Масалан, дар синф бо усули тағйирёбанда:

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

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

Масалан, дар сохтор бо усули mutating:

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

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