Junior — Middle
Vai Swift valodā ir iespējams īstenot savu īpašības ietvaru?
sobes.tech AI
Atbilde no AI
Jā, Swift jūs varat izveidot savus īpašību pārklājus (property wrappers). Tie ir īpaši tipi, kas inkapsulē piekļuves un uzglabāšanas loģiku īpašībai.
Piemērs vienkāršam pārklājumam, kas ierobežo īpašības vērtību no 0 līdz 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) // Izdrukās 100, jo vērtība ir ierobežota
Tādējādi, pārklājumi ļauj atkārtoti izmantot un centrāli pārvaldīt ar īpašībām saistīto loģiku.