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