Sobes.tech
Middle+

Актёр чист?

sobes.tech AI

Ҷавоб аз AI

Актор (Actor) дар Swift — навъе, ки ҳолати худро изолятсия мекунад, пешгирӣ мекунад дастрасии ҳамзамон аз сӯйи шохаҳои гуногун ва бо ин роҳ ҷанги маълумотро бартараф мекунад.

Хусусиятҳои асосӣ:

  • Изолятсияи ҳолат: Ҳамаи хосиятҳои актор танҳо аз дохили методҳои он ё аз дигар акторҳо бо модификаторҳои дастрасии мувофиқ дастрасанд.
  • Интерфейси асинхронӣ: Зангҳои ба методҳои актор аз берун ҳамеша асинхрон мебошанд ва талаб мекунанд await. Ин кафолат медиҳад, ки дастрасӣ ба ҳолат атомӣ аст.
  • Бе мерос: Акторҳо мерос намегиранд.
  • Намудани nonisolated let: Хосиятҳо метавонанд ҳамчун nonisolated нишон дода шаванд, агар онҳо константаҳо (let) бошанд ва намудҳои бехатар барои шоха дошта бошанд. Ин имкон медиҳад, ки ба онҳо бе await дастрасӣ пайдо шавад.

Масалан:

actor Counter {
    private var value = 0

    func increment() {
        value += 1
    }

    func getValue() -> Int {
        return value
    }
}

Истифода:

// Занг асинхрон талаб мешавад бо сабаби изолятсия
let myCounter = Counter()
await myCounter.increment()
let currentValue = await myCounter.getValue()

Акторҳо қисми калидии модели навтарини рақобат дар Swift мебошанд, ки роҳи бехатар ва сохторӣ барои идоракунии ҳолати тағйирёбандаи муштарак дар барномаҳои бисёртредро пешниҳод мекунанд.