7

Haskellで次のことを行う有効な方法はありますか:

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

「doDefault」の97行を持っている以外に?

4

3 に答える 3

19
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
于 2010-03-11T08:57:01.377 に答える
11

警備員を使う!;)

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


また

  | n `elem` [3..99] =  doDefault
于 2010-03-11T09:16:15.630 に答える
2

デフォルトのケースを _ パターンにすることができると思います。これは何にでも一致します。

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

そこの範囲の上限をチェックしないため、それがあなたが探しているものであるかどうかはわかりません...代わりにガードを使用することをお勧めします。

于 2010-03-11T09:00:24.500 に答える