Sobes.tech
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.