Подтвердить что ты не робот

Существует ли "каноническое" имя для функции, объединяющей min() и max()?

Я нахожу, что часто получаю функцию, которую я всегда называю "clamp()", что является комбинацией min() и max(). Существует ли стандартное "каноническое" имя для этой функции?

Он всегда выглядит примерно так:

function clamp($val, $lower, $upper)
{
  if ($val < $lower)
    return $lower;
  else if ($val > $upper)
    return $upper;
  else
    return $val;
}

Или просто используя встроенные функции min() и max():

function clamp($val, $lower, $upper)
{
  return max($lower, min($upper, $val));
}

Существуют вариации: вы также можете проверить недопустимый ввод, где lower > upper, и либо выбросить исключение, либо отменить входы. Или вы можете игнорировать порядок входов и называть его медианой из трех функций, но это может ввести в заблуждение.

4b9b3361

Ответ 1

clamp - хорошее имя.

Сделаем это стандартом.

Ответ 2

В некоторых языках у вас есть предел функции

num = limit (val, min, max)

Ответ 3

clip(val, lo, hi)

Ответ 4

Здесь мы используем pin. На самом деле мы используем pin для простых диапазонов и clamp для других вещей.

Ответ 5

Я бы просто запустил имя функции "rangeCheck"

Ответ 6

средний

Потому что он обобщает на большее количество значений.

Ответ 7

Как насчет bound?

bound(min, val, max)

Или ограничить?

constrain(val, min, max)

Ответ 8

Что вы думаете о таких вещах, как InRangeClosestTo (Number, RangeLowerBound, RangeUpperBound) или ClosestInRange (Number, LowerBoundOfRange, UpperBoundOfRange)? Они означают "Получите мне элемент диапазона, ближайшего к числу", как я надеюсь, очевидно.

Концепция более точная, чем Clamp, которая имеет две стороны, но не намного больше, или Limit или Bound, которые, возможно, не захотят возвращать что-либо, если число не находится в пределах диапазона,

Для меня они более ясны, чем остальные, которые я видел; хотя для их понимания может потребоваться несколько секунд, вам нужно всего лишь рассуждать о названии, и в лучшем случае краткий взгляд на комментарий для подтверждения; и это приятно, когда вы видите, насколько это точно (точно, правильно?).

У вас могут быть сомнения только в том, является ли диапазон включенным или нет, но я думаю, что большинство людей правильно включило бы его включительно. В качестве альтернативы вы можете использовать InInclRangeClosestTo и InExclRangeClosestTo, хотя я не вижу большого количества применений для эксклюзивных диапазонов.

Конечно, у вас должна быть автоматическая настройка IDE, если вы хотите их использовать.