I find that I frequently end up writing a function that I always call \"clamp()
\", that is kind of a combination of min()
and max()
. Is t
In some languages you have the function limit
num = limit(val, min, max)
What do you think of things like InRangeClosestTo(Number, RangeLowerBound, RangeUpperBound), or ClosestInRange(Number, LowerBoundOfRange, UpperBoundOfRange)? They mean 'Get me the element of the range closest to the number', as I hope is obvious.
The concept is more precise than a Clamp that yeah has two sides but not much more, or a Limit or Bound that might not want to return anything if the number is not within the range,
To me they are clearer then the rest I saw; although it can take a couple of seconds to understand them, you only need to reason about the name, and at most have a brief look at the comment for confirmation; and it's nice when you see how precise it is (it is precise, right?).
You might only have doubts on whether the range is inclusive or not, but I think most people would correctly assume it's inclusive. Alternatively you might use InInclRangeClosestTo and InExclRangeClosestTo, althought I don't see a lot of uses for exclusive ranges.
Of course you should have an auto-completing IDE if you wanted to use them.
clamp is a good name.
Let us make it the standard.
clip(val, lo, hi)
What about bound?
bound(min, val, max)
Or constrain?
constrain(val, min, max)
I'd just go for a function name "rangeCheck"