Pregunta

Me parece que a menudo terminan escribir una función que siempre me llaman "clamp()", que es una especie de combinación de min() y max().Hay un estándar, "canónica" nombre de esta función?

Siempre se ve algo como esto:

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

O simplemente con built-in min() y max() funciones:

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

Existen variaciones:También puede comprobar la validez de la entrada, donde lower > upper, y ya sea una excepción o inversa de las entradas.O usted puede ignorar el orden de las entradas y llamar a una mediana de tres funciones, pero que puede ser confuso.

¿Fue útil?

Solución

abrazadera es un buen nombre.

Vamos a dejar la norma.

Otros consejos

En algunos idiomas que tiene el límite de la función

num = límite (val, min, max)

clip(val, lo, hi)

Utilizamos pin aquí. En realidad, usamos clamp para rangos simples y <=> para otras cosas.

Me acaba de ir de un nombre de función "rangeCheck"

mediana

Debido a que se generaliza a más valores.

¿Qué hay de con destino

bound(min, val, max)

restricción ?

constrain(val, min, max)

¿Qué opinas de cosas como InRangeClosestTo (Número, RangeLowerBound, RangeUpperBound), o ClosestInRange (Número, LowerBoundOfRange, UpperBoundOfRange)? Que significan 'Tómame el elemento de la gama más cercana al número', como espero es obvia.

El concepto es más precisa que una pinza que sí tiene dos lados, pero no mucho más, o un límite o Bound que podrían no quiere devolver nada si el número no está dentro del rango,

Para mí son más claro a continuación, el resto vi; aunque puede tardar un par de segundos para entenderlas, sólo es necesario para razonar acerca del nombre, y como mucho tener un breve vistazo a los comentarios de la confirmación; y es agradable cuando se ve cómo precisa es (es preciso, ¿verdad?).

Es posible que sólo tienen dudas acerca de si el rango es inclusivo o no, pero creo que la mayoría de la gente correctamente asumir que es inclusiva. Alternativamente, usted puede usar InInclRangeClosestTo y InExclRangeClosestTo, aunque incluya no veo una gran cantidad de usos para los rangos exclusivos.

Por supuesto, usted debe tener un IDE de auto-completar si desea utilizarlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top