Skip to content

Instantly share code, notes, and snippets.

@haoyu-c
Last active November 8, 2019 16:37
Show Gist options
  • Save haoyu-c/2c11bac12ec78f96fbd822ae6ecaf347 to your computer and use it in GitHub Desktop.
Save haoyu-c/2c11bac12ec78f96fbd822ae6ecaf347 to your computer and use it in GitHub Desktop.
@propertyWrapper
struct Clamping<Value: Comparable> {
var value: Value
let range: ClosedRange<Value>
init(wrappedValue value: Value, _ range: ClosedRange<Value>) {
precondition(range.contains(value))
self.value = value
self.range = range
}
var wrappedValue: Value {
get { value }
set { value = min(max(range.lowerBound, newValue), range.upperBound) }
}
}
// 使用:
@Clamping(wrappedValue: 1.0, 0...14) var pH: Double
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment