簡體   English   中英

如何在Haskell中簡單退出?

[英]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 ()在這里所做的只是...什么都沒有,這是無操作。 因為maincase切換后結束,所以如果您不像其他選項一樣遞歸回main ,程序也會結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM