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 // Աշխատանք, որը կախված է radius-ից
    

Swift-ում setter-ները կարող են օգտագործվել պահվող (stored properties) և հաշվարկվող հատկությունների (computed properties) համար: Պահվող հատկությունների համար հաճախ օգտագործվում են հատկությունների դիտարկիչներ (willSet և didSet), որոնք կանչվում են նոր արժեք սահմանելուց առաջ և հետո համապատասխանաբար: Հաշվարկվող հատկությունների setter-ը (set) որոշում է, թե ինչպես պետք է նշանակվի արժեքը:

var myProperty: String {
    // Գ getter
    get {
        return "Value is: \(internalValue)"
    }
    // Գ setter
    set(newValue) {
        internalValue = newValue + " processed" // Մոդիֆիկացնել նշանակվող արժեքը
    }
}

private var internalValue: String = "" // Արտաքին պահվող հատկություն