[英]How Can I Make a Simple Exit in Haskell?
這是代碼:
main :: IO()
main = do
{
putStrLn ("Meniu: ");
putStrLn ("1. menu 1");
putStrLn ("2. menu 2");
putStrLn ("3. menu 3");
putStrLn ("4. menu 4");
putStrLn ("5. Exit - Iesire)");
putStrLn ("-------------------------");
putStr ("Enter option: ");
opt <- getLine;
if(opt == "1") then do
{
Code one etc
main
}
else if(opt == "2") then do
{
Code 2 etc
main
}
else if(opt == "3") then do
{
code 3 etc
main
}
else if(opt == "4") then do
{
code 4 etc
main
}
else if(opt == "5") then do
{
??????????? ()
}
else putStrLn "Option is not exist";
}
問題:在選項5 (opt == 5)
我需要編寫代碼來停止菜單,但是我不知道該怎么做。 我試圖在Google和StackOverflow上找到更多示例,但實際上找不到解決方案。
return ()
將在這里工作。 在這種情況下, return
行為實際上與程序語言中的行為相同(但請注意,這通常不是正確的)。
關於樣式的注意事項:在Haskell中,帶有相等比較的if
... else
鏈非常不習慣。 正確的方法是一個case
:
main = do
putStrLn "Meniu: "
sequence_ [ putStrLn $ [n]++". menu "++[n] | n<-['1'..'5'] ]
putStrLn "-------------------------"
putStr "Enter option: "
opt <- getLine
case opt of
"1" -> do
Code one etc
main
"2" -> do
Code 2 etc
main
"3" -> do
code 3 etc
main
"4" -> do
code 4 etc
main
"5" -> return ()
_ -> putStrLn "Option does not exist"
如果正確縮進代碼,則不需要大括號和分號。
return ()
在這里所做的只是...什么都沒有,這是無操作。 因為main
在case
切換后結束,所以如果您不像其他選項一樣遞歸回main
,程序也會結束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.