Sobes.tech
Junior — Middle

Могу ли да се објаве методи који мењају стање објеката у класама на Swift-у?

sobes.tech АИ

Одговор од АИ

U Swift-u, metode koji menjaju stanje objekta deklarisani su ključnom reči mutating, ali to važi samo za strukture i enumeracije (tipove vrednosti). Za klase (referentne tipove), metode po default-u mogu menjati svojstva instance bez dodatne ključne reči.

To znači:

  • U klasama, moguće je deklarisati metode koje menjaju stanje objekta bez mutating.
  • U strukturama i enumeracijama, metode koje menjaju svojstva moraju biti označene kao mutating.

Primer klase sa metodom koja menja stanje:

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

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

Primer strukture sa mutating metodom:

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

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