Frage

Gibt es eine gültige Möglichkeit, in Haskell Folgendes zu tun?

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

Abgesehen davon, dass 97 Zeilen "dodefault" haben?

War es hilfreich?

Lösung

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

Wenn Sie wirklich eine Reichweite brauchen,

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    x | 3 <= x && x < 100 -> doDefault
    _     -> reallyDoDefault

Andere Tipps

Verwenden von Wachen! ;))

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


ODER

  | n `elem` [3..99] =  doDefault

Ich denke, Sie können den Standardfall das _ Muster haben, das mit allem übereinstimmt.

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

Ich bin mir nicht sicher, ob das genau das ist, wonach Sie suchen, da es die obere Grenze auf dem Bereich dort nicht überprüft. Vielleicht möchten Sie stattdessen Wachen verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top