[swift-evolution] Add a `clamp` function to Algorithm.swift
David Sweeris
davesweeris at mac.com
Thu Mar 9 19:44:28 CST 2017
> On Mar 9, 2017, at 5:37 PM, Nicholas Maccharoli via swift-evolution <swift-evolution at swift.org> wrote:
>
> Swift Evolution,
>
> Having a`clamp` function available in the standard library would complement `min` and `max` really well.
>
> I mentioned this before when the discussion for Swift 4 was still in stage 1, but now that stage 2 has started I thought it might be worth while to bring up again.
>
> Still needs some work, but here is the draft proposal I wrote previously
>
> https://github.com/Nirma/swift-evolution/commit/a51c543a76e9a1021996fb4b617311a588e7f397 <https://github.com/Nirma/swift-evolution/commit/a51c543a76e9a1021996fb4b617311a588e7f397>
>
> Basically it boils down to something like this.
>
> public func clamp<T : Comparable>(value: T, _ lower: T, _ upper: T) -> T {
> return max(lower, min(value, upper))
> }
>
>
> What does the community think?
IIRC, we’ve been avoiding top-level functions lately… What about as an extension on Range?
extension Range {
func clamp(_ x: Bound) -> Bound {
return max(lowerBound, min(x, upperBound))
}
}
- Dave Sweeris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170309/ffb0ae5f/attachment.html>
More information about the swift-evolution
mailing list