在 Haskell 中是否有有效的方法来执行以下操作:
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
除了有 97 行“doDefault”之外?
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
我不确定这是否正是您要寻找的,因为它不会检查那里范围的上限……您可能想改用警卫。