Sobes.tech
Junior — Middle

Կարո՞ղ է Swift լեզվում դասերում հայտարարագրել այն մեթոդները, որոնք փոխում են օբյեկտների վիճակը։

sobes.tech AI

Պատասխան AI-ից

Swift- ում, այն մեթոդները, որոնք փոխում են օբյեկտի վիճակը, հայտարարում են mutating բանալի բառով, բայց դա վերաբերում է միայն կառուցվածքներին և ցուցակներին (արժեքային տեսակներ): Կլասների (հղման տեսակներ) համար, մեթոդները ըստ նախնական կարգի կարող են փոխել օրինակակի հատկությունները առանց լրացուցիչ բանալի բառի:

Արդյունքում՝

  • Կլասներում կարելի է հայտարարել մեթոդներ, որոնք փոխում են օբյեկտի վիճակը, առանց mutating:
  • Կառուցվածքներում և ցուցակներում, փոխող մեթոդները պետք է նշվեն որպես mutating:

Օրինակ՝ կլասի հետ փոխող մեթոդով՝

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

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

Օրինակ՝ կառուցվածքի հետ mutating մեթոդով՝

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

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