Junior — Middle
Կարո՞ղ է Swift լեզվում իր սեփական հատկության պատյանն իրականացնելը։
sobes.tech AI
Պատասխան AI-ից
Այո, Swift-ում դուք կարող եք ստեղծել ձեր սեփական հատկությունների ծածկագրեր (property wrappers): Սա հատուկ տեսակ է, որը ամփոփում է մուտքի և պահպանում արժեքի տրամաբանությունը:
Օրինակ՝ պարզ ծածկագիր, որը սահմանափակում է հատկության արժեքը 0-ից 100-ը:
@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, քանի որ արժեքը սահմանափակված է
Այսպիսով, ծածկագրերը թույլ են տալիս վերօգտագործել և կենտրոնացնել աշխատանքի տրամաբանությունը հատկությունների հետ։