سؤال

أجد أنني في كثير من الأحيان في نهاية المطاف كتابة دالة أدعو دائما "clamp()"هذا هو نوع من مزيج من 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, و إما رمي استثناء أو عكس المدخلات.أو يمكنك تجاهل النظام من المدخلات نسميها متوسط من ثلاثة وظيفة ، ولكن هذا يمكن أن يكون مربكا.

هل كانت مفيدة؟

المحلول

المشبك هو اسم جيد.

دعونا نجعل من هذا المعيار.

نصائح أخرى

في بعض اللغات لديك الحد الدالة

والأسطوانات = الحد (فال، دقيقة، كحد أقصى)

clip(val, lo, hi)

ونحن نستخدم pin هنا. في الواقع، ونحن نستخدم pin لنطاقات بسيطة وclamp عن غيرها من الاشياء.

وكنت مجرد الذهاب لاسم الدالة "rangeCheck"

متوسط

لأنه يعمم إلى المزيد من القيم.

ماذا عن لا بد?

bound(min, val, max)

أو تقييد?

constrain(val, min, max)

ما رأيك في أشياء مثل InRangeClosestTo(رقم RangeLowerBound, RangeUpperBound) ، أو ClosestInRange(رقم LowerBoundOfRange, UpperBoundOfRange)?أنها تعني 'أعطني عنصر من مجموعة الأقرب إلى عدد', وأتمنى أن يكون واضح.

هذا المفهوم هو أكثر دقة من المشبك أن نعم الجانبين ولكن ليس أكثر من ذلك بكثير أو حد أو لا بد من أن قد لا تريد العودة إلى أي شيء إذا لم يكن الرقم ضمن مجموعة ،

لي أكثر وضوحا ثم بقية رأيت ؛ على الرغم من أنه يمكن أن يستغرق بضع ثوان إلى فهم لهم ، تحتاج فقط إلى السبب عن اسم ، وفي معظم نظرة سريعة على التعليق على تأكيد ؛ انها لطيفة عندما ترى كيف دقة هو (أنها دقيقة ، أليس كذلك؟).

قد يكون لديك فقط شكوك حول ما إذا كانت مجموعة شاملة أو لا, ولكن أعتقد أن معظم الناس سوف بشكل صحيح نفترض انها شاملة.بدلا من ذلك يمكنك استخدام InInclRangeClosestTo و InExclRangeClosestTo, althought أنا لا أرى الكثير من الاستخدامات حصرية نطاقات.

بالطبع يجب أن يكون لديك لصناعة السيارات في استكمال IDE إذا أردت استخدامها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top