2010-03-11 40 views

Trả lời

15
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 
+0

Làm cho tôi muốn các Prelude định nghĩa "inRange lo hi v = lo <= v && v MtnViewMark

+6

Mộ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 -> ... –

1

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ế.

6

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 
+0

Nó phải là 'n == 0', v.v. –

+0

Cảm ơn! Alexey Romanov –

+0

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. –

Các vấn đề liên quan