Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @propertyWrapper
- struct Clamped<T: Comparable> {
- var wrappedValue: T {
- didSet {
- wrappedValue = Self.value(wrappedValue, clampedTo: range)
- }
- }
- private let range: ClosedRange<T>
- init(wrappedValue: T, _ range: ClosedRange<T>) {
- self.wrappedValue = Self.value(wrappedValue, clampedTo: range)
- self.range = range
- }
- private static func value(_ value: T, clampedTo range: ClosedRange<T>) -> T {
- min(max(value, range.lowerBound), range.upperBound)
- }
- }
- struct Movie {
- @Clamped(0...10) var rating: Double = 0
- }
- let pulpFiction = Movie(rating: 9999)
- print(pulpFiction.rating) // sadly only prints 10 :-(
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement