Sobes.tech
Junior — Middle

Lze v jazyce Swift deklarovat metody, které mění stav objektů ve třídách?

sobes.tech AI

Odpověď od AI

Ve Swiftu jsou metody, které mění stav objektu, deklarovány klíčovým slovem mutating, ale to platí pouze pro struktury a enumerace (hodnotové typy). U tříd (referenční typy) mohou metody standardně měnit vlastnosti instance bez dalšího klíčového slova.

To znamená:

  • U tříd lze deklarovat metody, které mění stav objektu, bez mutating.
  • U struktur a enumerací musí být metody, které mění vlastnosti, označeny jako mutating.

Příklad třídy s měnící metodou:

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

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

Příklad struktury s mutating metodou:

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

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