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.