Sobes.tech
Junior — Middle

Swift tilida o'z xususiyat qoplovi yaratish mumkinmi?

sobes.tech AI

AIdan javob

Ha, Swiftda o'z xususiyat qoplamalarini (property wrappers) yaratish mumkin. Bu maxsus tur bo'lib, xususiyatning kirish va saqlash mantiqini inkapsulyatsiya qiladi.

0 dan 100 gacha bo'lgan diapazonda xususiyat qiymatini cheklovchi oddiy qoplamaning misoli:

@propertyWrapper
struct Clamped {
    private var value: Int
    private let range: ClosedRange<Int>

    var wrappedValue: Int {
        get { value }
        set { value = min(max(newValue, range.lowerBound), range.upperBound) }
    }

    init(wrappedValue initialValue: Int, _ range: ClosedRange<Int>) {
        self.range = range
        self.value = min(max(initialValue, range.lowerBound), range.upperBound)
    }
}

struct Player {
    @Clamped(0...100) var health: Int = 100
}

var player = Player()
player.health = 150
print(player.health) // 100 chiqaradi, chunki qiymat cheklangan

Shu tarzda, qoplamalar xususiyatlar bilan ishlash mantiqini qayta ishlatish va markazlashtirish imkonini beradi.