From 99e6ea78843bdf898c9c052de67aefa36a22f46d Mon Sep 17 00:00:00 2001 From: flaviut Date: Thu, 29 May 2014 16:14:16 -0400 Subject: [PATCH] Add page on case statements --- src/control_flow/case.md | 46 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/control_flow/case.md b/src/control_flow/case.md index d8b272e..7abaf4d 100644 --- a/src/control_flow/case.md +++ b/src/control_flow/case.md @@ -1 +1,45 @@ -# Case Statements \ No newline at end of file +# Case Statements + +Nimrod also supports case statements, which are like switches in other languages. There are several things to note here: + +* You can use strings in the switch statement +* Sets and ranges of ordinal types are also usable +* case statements, like most things, are actually expressions + +``` Nimrod +case "charlie" +of "alfa": + echo "A" +of "bravo": + echo "B" +of "charlie": + echo "C" +else: + echo "Unrecognized letter" + +case 'h': +of 'a', 'e', 'i', 'o', 'u': + echo "Vowel" +of '\127'..'\255': + echo "Maybe, but I only know English" +else: + echo "Consonant" + +proc positiveOrNegative(num: int): string = + result = case num + of low(int)..-1: + "negative" + of 0: + "zero" + of 1..high(int): + "positive" + +echo positiveOrNegative(-1) +``` + +``` +$ nimrod c -r ./case_stmts.nim +C +Consonant +negative +``` \ No newline at end of file