Sobes.tech
Junior — Middle

Je možné v jazyku Swift deklarovať metódy, ktoré menia stav objektov v triedach?

sobes.tech AI

Odpoveď od AI

V Swift, metódy, ktoré menia stav objektu, sú deklarované kľúčovým slovom mutating, ale to platí iba pre štruktúry a enumerácie (typy hodnoty). Pre triedy (referenčné typy) môžu metódy štandardne meniť vlastnosti inštancie bez ďalšieho kľúčového slova.

To znamená:

  • V triedach je možné deklarovať metódy, ktoré menia stav objektu bez mutating.
  • V štruktúrach a enumeráciách musia byť metódy, ktoré menia vlastnosti, označené ako mutating.

Príklad triedy s meniacou metódou:

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

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

Príklad štruktúry s mutating metódou:

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

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