سؤال

هل هناك طريقة صالحة للقيام بما يلي في Haskell:

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    3..99 -> doDefault

بخلاف أن يكون لديك 97 خطوط من "doodefault"؟

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

المحلول

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    _     -> doDefault

إذا كنت حقا بحاجة إلى مجموعة،

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    x | 3 <= x && x < 100 -> doDefault
    _     -> reallyDoDefault

نصائح أخرى

باستخدام الحراس! ؛)

Foo n 
  | n == 0 = doThis
  | n == 1 = doThat
  | n == 2 = doAnother
  | (n >= 3 ) && (n <= 99) = doDefault 


أو

  | n `elem` [3..99] =  doDefault

أعتقد أنه يمكنك الحصول على الحالة الافتراضية أن تكون نمط _ الذي يطابق أي شيء.

case n of
  0 -> doThis
  1 -> doThat
  2 -> doAnother
  _ -> doDefault

لست متأكدا مما إذا كان هذا ما تبحث عنه تماما، لأنه لا يتحقق من الحد الأعلى من النطاق هناك ... قد ترغب في استخدام الحراس بدلا من ذلك.

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