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