Junior — Middle
Kas Swiftis saab klassides deklareerida meetodeid, mis muudavad objektide olekut?
sobes.tech AI
Vastus AI-lt
Swiftis on meetodid, mis muudavad objekti olekut, deklareeritud võtmesõnaga mutating, kuid see kehtib ainult struktuuride ja enumeratsioonide (väärtusetüübid) kohta. Klasside (viidetüübid) puhul võivad meetodid vaikimisi muuta eksemplari omadusi ilma täiendava võtmesõnata.
See tähendab:
- Klassides saab deklareerida meetodeid, mis muudavad objekti olekut, ilma
mutating. - Struktuurides ja enumeratsioonides peavad meetodid, mis muudavad omadusi, olema märgitud kui
mutating.
Näide klassiga, mille meetod muudab olekut:
class Counter {
var count = 0
func increment() {
count += 1
}
}
let counter = Counter()
counter.increment()
print(counter.count) // 1
Näide struktuuriga, millel on mutating meetod:
struct Counter {
var count = 0
mutating func increment() {
count += 1
}
}
var counter = Counter()
counter.increment()
print(counter.count) // 1