Sobes.tech
Junior — Middle

Vai Swift valodā ir iespējams deklarēt metodes, kas maina objektu stāvokli klasēs?

sobes.tech AI

Atbilde no AI

Swift valodā metodes, kas maina objekta stāvokli, tiek deklarētas ar atslēgvārdu mutating, bet tas attiecas tikai uz struktūrām un enumerācijām (vērtību tipiem). Klases (atsauces tipi) pēc noklusējuma var mainīt instances īpašības bez papildu atslēgvārda.

Tas nozīmē:

  • Klases var deklarēt metodes, kas maina objekta stāvokli, bez mutating.
  • Struktūrās un enumerācijās metodes, kas maina īpašības, jāmarķē kā mutating.

Piemērs klases ar mainošu metodi:

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

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

Piemērs struktūrai ar mutating metodi:

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

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