我发现我经常最终编写一个我总是称之为“clamp()
”的函数,这就是min()
和max()
的组合。这个功能是否有标准的“规范”名称?结合min()和max()的函数是否存在“canonical”名称?
它总是看起来是这样的:
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
,并抛出异常或反转输入。或者,您可以忽略输入顺序并将其称为三位中位数函数,但这可能会造成混淆。
我会避免给你的参数使用与所用函数相同的名字,特别是因为它们不用于匹配对(即$ min用于max(),反之亦然)。相反,可能是$ lower和$ upper。 – 2009-02-05 16:39:17
@BenBlank:好主意。编辑问题 – Kip 2012-10-18 18:39:04
我使用名称InRange(),但我的评论不是关于名称,而是关于参数的排序。我发现它更容易阅读:InRange(min,value,max)比(value,min,max) – 2012-10-24 18:39:52