Sobes.tech
Junior

Эгер өзгөрмө үчүн setter орнотулса, бул эмне дегендик?

sobes.tech AI

AIден жооп

Setter (setter) — бул жаңы маанини өзгөрмөгө жазуу үчүн көзөмөлдөөгө мүмкүндүк берген метод. Setter орнотулганда, стандарттык маанини берүү механизми setter ичиндеги код менен алмаштырылат. Бул мүмкүнчүлүк берет:

  • Кирүү маалыматтарын текшерүү: Жаңы маанинин белгиленген шарттарга ылайык келерин текшерүү, аны өзгөрмөгө жазуудан мурун.
    var age: Int = 0 {
        didSet { // Setter (didSet) маанини орнотуп бүткөндөн кийин чакырылат
            if age < 0 {
                age = 0 // Терс мааниге уруксат бербөө
            }
        }
    }
    
  • Кошумча аракеттерди аткаруу: Мөөнөттүн мааниси өзгөргөндө башка кодду иштетүү, мисалы, колдонуучу интерфейсин жаңыртуу же башка бөлүктөргө кабарлоо.
    var score: Int = 0 {
        didSet { // Setter (didSet)
            print("Score updated to \(score)") // Өзгөрүүнү логдоо
            updateUI() // UIны жаңыртуу
        }
    }
    
    func updateUI() {
        // Интерфейсти жаңыртуу коду
    }
    
  • Башка мүчөлөрдүн маанисин эсептөө: Бир мүчө өзгөргөндө башкасынын мааниси таасир этиши мүмкүн.
    var radius: Double = 0.0 {
        didSet { // Setter (didSet)
            area = Double.pi * radius * radius // Радиус өзгөргөндө аянтты кайра эсептөө
        }
    }
    
    var area: Double = 0.0 // Радиуска көз каранды мүчө
    

Swiftте setterлер сакталган (stored properties) жана эсептелген мүчөлөр үчүн колдонулушу мүмкүн. Сакталган мүчөлөр үчүн көбүнчө willSet жана didSet көзөмөлчүлөр колдонулат, алар жаңы маанини орнотуу алдында жана кийин чакырылат. Эсептелген мүчөлөр үчүн setter (set) маанини кандай белгилөө керектигин аныктайт.

var myProperty: String {
    // Getter
    get {
        return "Value is: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " processed" // Белгиленген маанини өзгөртүү
    }
}

private var internalValue: String = "" // Ички сакталган мүчө