سؤال
هل هناك طريقة صالحة للقيام بما يلي في 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
لست متأكدا مما إذا كان هذا ما تبحث عنه تماما، لأنه لا يتحقق من الحد الأعلى من النطاق هناك ... قد ترغب في استخدام الحراس بدلا من ذلك.
لا تنتمي إلى StackOverflow