Reichweite Überprüfung in Haskells Fall?
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?
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