Question

Je trouve que je finis souvent par écrire une fonction que j'appelle toujours "clamp()", c'est une sorte de combinaison de min() et max().Existe-t-il un nom standard « canonique » pour cette fonction ?

Cela ressemble toujours à ceci :

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

Ou simplement en utilisant le module intégré min() et max() les fonctions:

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

Des variantes existent :Vous pouvez également vérifier les entrées non valides, où lower > upper, et soit lancer une exception, soit inverser les entrées.Ou vous pouvez ignorer l’ordre des entrées et l’appeler une fonction médiane sur trois, mais cela peut prêter à confusion.

Était-ce utile?

La solution

est un bon nom collier .

Laissez-nous faire la norme.

Autres conseils

Dans certaines langues, vous avez la limite de fonction

num = limite (val, min, max)

clip(val, lo, hi)

Nous utilisons ici pin. En fait, nous utilisons pour les gammes simples clamp et pour d'autres choses <=>.

Je vais juste pour un nom de fonction « rangeCheck »

médiane

Parce qu'il généralise à plusieurs valeurs.

Qu'en est-il de lié?

bound(min, val, max)

Ou contraindre?

constrain(val, min, max)

Que pensez-vous des choses comme InRangeClosestTo (Nombre, RangeLowerBound, RangeUpperBound) ou ClosestInRange (Nombre, LowerBoundOfRange, UpperBoundOfRange)? Ils veulent dire « Donne-moi l'élément de la gamme la plus proche du nombre », comme je l'espère est évidente.

Le concept est plus précis que oui une pince qui a deux côtés, mais pas beaucoup plus, ou une limite ou Bound qui pourrait ne pas vouloir retourner quoi que ce soit si le nombre ne relève pas de la plage,

Pour moi, ils sont plus clairs le reste, j'ai vu; même si elle peut prendre quelques secondes pour les comprendre, il vous suffit de raisonner sur le nom, et au plus un bref regard sur le commentaire de confirmation; et il est agréable quand vous voyez comment il est précis (il est précis, non?).

Vous pourriez avoir des doutes que si la plage est compris ou non, mais je pense que la plupart des gens supposeraient correctement, il est inclus. Sinon, vous pouvez utiliser InInclRangeClosestTo et InExclRangeClosestTo, althought je ne vois pas beaucoup d'utilisations pour des gammes exclusives.

Bien sûr, vous devriez avoir un IDE-achèvement automatique si vous voulez les utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top