Sobes.tech
Junior

თუ ცვლადისათვის სეტერი დაყენებულია, რა ნიშნავს ეს?

sobes.tech AI

პასუხი AI-სგან

Setter (setter) — ეს მეთოდია, რომელიც საშუალებას აძლევს კონტროლს ახალი მნიშვნელობის ჩანაწერაზე ცვლადში. როდესაც სეტერი გამოაცხადება, სტანდარტული მნიშვნელობის მინიჭების მექანიზმი იცვლება სეტერის კოდით. ეს საშუალებას აძლევს:

  • შესავალი მონაცემების ვალიდაცია: გადაამოწმოს, შეესაბამება თუ არა ახალი მნიშვნელობა მითითებულ პირობებს, სანამ მას ცვლადში ჩაწერს.
    var age: Int = 0 {
        didSet { // სეტერი (didSet) გამოიძახება მნიშვნელობის დაყენების შემდეგ
            if age < 0 {
                age = 0 // არ დავუშვათ უარყოფითი მნიშვნელობა
            }
        }
    }
    
  • დამატებითი მოქმედებების განხორციელება: სხვა კოდის გაშვება ცვლადის მნიშვნელობის ცვლილებისას, მაგალითად, მომხმარებლის ინტერფეისის განახლება ან სხვა ნაწილების შეტყობინება.
    var score: Int = 0 {
        didSet { // სეტერი (didSet)
            print("Score updated to \(score)") // ცვლილების ლოგირება
            updateUI() // UI განახლება
        }
    }
    
    func updateUI() {
        // ინტერფეისის განახლების კოდი
    }
    
  • სხვა თვისებების მნიშვნელობების გამოთვლა: ერთი თვისების ცვლილება შეიძლება გავლენა იქონიოს სხვა თვისებაზე.
    var radius: Double = 0.0 {
        didSet { // სეტერი (didSet)
            area = Double.pi * radius * radius // ფართობის გადათვლა радиუსის ცვლილებისას
        }
    }
    
    var area: Double = 0.0 // თვისება, რომელიც დამოკიდებულია radius-ზე
    

Swift-ში სეტერები შეიძლება გამოყენებულ იქნას შენახული (stored properties) და გამოთვლადი თვისებების (computed properties)ათვის. შენახული თვისებებისათვის ხშირად გამოიყენება თვისებების დამკვირვებლები (willSet და didSet), რომლებიც გამოიძახება ახალი მნიშვნელობის დაყენებამდე და შემდეგ. გამოთვლადი თვისებების სეტერი (set) განსაზღვრავს, როგორ უნდა იყოს მნიშვნელობა მინიჭებული.

var myProperty: String {
    // გეტერი
    get {
        return "Value is: \(internalValue)"
    }
    // სეტერი
    set(newValue) {
        internalValue = newValue + " processed" // მინიჭებული მნიშვნელობის მოდიფიკაცია
    }
}

პირადი მეხსიერების თვისება: String = "" // შიდა შენახული თვისება