Optimised version of Clamped

This commit is contained in:
Lukas Korba 2022-02-18 07:17:10 +01:00
parent 44a9d4ffad
commit 895a43376d
1 changed files with 8 additions and 7 deletions

View File

@ -15,17 +15,18 @@ struct Clamped<Value: Comparable> {
var value: Value
let range: ClosedRange<Value>
var wrappedValue: Value {
get {
min(
max(range.lowerBound, value),
range.upperBound
)
}
set { value = newValue }
get { value }
set { value = clamp(value: newValue, range: range) }
}
init(wrappedValue: Value, _ range: ClosedRange<Value>) {
self.value = wrappedValue
self.range = range
value = clamp(value: wrappedValue, range: range)
}
private func clamp(value: Value, range: ClosedRange<Value>) -> Value {
min(range.upperBound, max(range.lowerBound, wrappedValue))
}
}