When a property wrapper exposes a `projectedValue`, how do you access it from outside, and what is the relationship between the wrapper's stored `wrappedValue` and `projectedValue`?
@propertyWrapper
struct Clamped {
private var value: Int
let range: ClosedRange<Int>
var wrappedValue: Int {
get { value }
set { value = min(max(newValue, range.lowerBound), range.upperBound) }
}
var projectedValue: Bool { value == range.upperBound }
init(wrappedValue: Int, _ range: ClosedRange<Int>) {
self.range = range
self.value = min(max(wrappedValue, range.lowerBound), range.upperBound)
}
}
struct S { @Clamped(0...10) var level = 5 }