mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-18 05:20:31 +00:00
Added assertion to clamp (#17248)
Co-authored-by: flywind <xzsflywind@gmail.com>
This commit is contained in:
@@ -1190,6 +1190,8 @@ func clamp*[T](val: T, bounds: Slice[T]): T {.since: (1, 5), inline.} =
|
||||
type A = enum a0, a1, a2, a3, a4, a5
|
||||
assert a1.clamp(a2..a4) == a2
|
||||
assert clamp((3, 0), (1, 0) .. (2, 9)) == (2, 9)
|
||||
doAssertRaises(AssertionDefect): discard clamp(1, 3..2) # invalid bounds
|
||||
assert bounds.a <= bounds.b, $(bounds.a, bounds.b)
|
||||
clamp(val, bounds.a, bounds.b)
|
||||
|
||||
func lcm*[T](x: openArray[T]): T {.since: (1, 1).} =
|
||||
|
||||
@@ -251,9 +251,12 @@ proc max*[T](x: openArray[T]): T =
|
||||
|
||||
proc clamp*[T](x, a, b: T): T =
|
||||
## Limits the value `x` within the interval [a, b].
|
||||
## This proc is equivalent to but fatser than `max(a, min(b, x))`.
|
||||
## This proc is equivalent to but faster than `max(a, min(b, x))`.
|
||||
##
|
||||
## **Note:** `a <= b` is assumed and will not be checked.
|
||||
## .. warning:: `a <= b` is assumed and will not be checked (currently).
|
||||
##
|
||||
## **See also:**
|
||||
## `math.clamp` for a version that takes a `Slice[T]` instead.
|
||||
runnableExamples:
|
||||
assert (1.4).clamp(0.0, 1.0) == 1.0
|
||||
assert (0.5).clamp(0.0, 1.0) == 0.5
|
||||
|
||||
Reference in New Issue
Block a user