Ich finde, dass ich am Ende eine Funktion schreibe, die ich immer "clamp()
" nenne, das ist eine Art Kombination aus min()
und max()
. Gibt es einen standardmäßigen "kanonischen" Namen für diese Funktion?Gibt es einen "kanonischen" Namen für eine Funktion, die min() und max() kombiniert?
Es sieht immer so etwas wie dieses:
function clamp($val, $lower, $upper)
{
if ($val < $lower)
return $lower;
else if ($val > $upper)
return $upper;
else
return $val;
}
Oder einfach mit der integrierten in min()
und max()
Funktionen:
function clamp($val, $lower, $upper)
{
return max($lower, min($upper, $val));
}
Variationen existieren: Sie können auch für ungültige Eingaben überprüfen können, wo lower > upper
, und entweder eine Ausnahme auslösen oder die Eingaben umkehren. Oder Sie können die Reihenfolge der Eingaben ignorieren und sie als eine Median-von-drei-Funktion bezeichnen, aber das kann verwirrend sein.
Ich würde vermeiden, Ihren Parametern die gleichen Namen wie die Funktionen zu geben, vor allem, da sie nicht in passenden Paaren verwendet werden (d. H. $ Min wird mit max() verwendet und umgekehrt). Vielleicht $ niedriger und $ höher, stattdessen. –
@BenBlank: gute Idee. die Frage bearbeitet – Kip
Ich benutze den Namen InRange(), aber mein Kommentar ist nicht über den Namen, es geht um die Reihenfolge der Parameter. Ich finde es einfacher zu lesen: InRange (min, value, max) als (value, min, max) –