Có cách nào hợp lệ để làm như sau trong Haskell:Kiểm tra phạm vi trong trường hợp của Haskell?
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
nào khác ngoài việc có 97 dòng "doDefault"?
Có cách nào hợp lệ để làm như sau trong Haskell:Kiểm tra phạm vi trong trường hợp của Haskell?
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
nào khác ngoài việc có 97 dòng "doDefault"?
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Nếu bạn thực sự cần một phạm vi,
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
x | 3 <= x && x < 100 -> doDefault
_ -> reallyDoDefault
Tôi nghĩ bạn có thể có trường hợp mặc định là _ mô hình, mà phù hợp vào bất cứ điều gì.
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Tôi không chắc đó có phải là những gì bạn đang tìm kiếm hay không, vì nó không kiểm tra giới hạn trên phạm vi ở đó ... bạn có thể muốn sử dụng vệ sĩ thay thế.
Sử dụng nhân viên bảo vệ! ;)
Foo n
| n == 0 = doThis
| n == 1 = doThat
| n == 2 = doAnother
| (n >= 3) && (n <= 99) = doDefault
HOẶC
| n `elem` [3..99] = doDefault
Nó phải là 'n == 0', v.v. –
Cảm ơn! Alexey Romanov –
Cá nhân tôi thích phiên bản 'n \' elem \ '[3..99]' hơn phiên bản sử dụng bất đẳng thức. –
Làm cho tôi muốn các Prelude định nghĩa "inRange lo hi v = lo <= v && v
MtnViewMarkMột hình thức tổng quát về điều đó là trong Data.Ix : trường hợp n của _ | inRange (3,100) n -> ... –