簡體   English   中英

Haskell案例陳述

[英]Haskell case statement

我有這樣的代碼

main :: [[String]] -> IO ()
main st = do
    answer <- getLine
    case answer of
      "q" -> return ()
      "load" x -> main $ parseCSV $ readFile x

這是行不通的,所以我的問題是如何使用case switch語句來更改輸入內容。例如,在我的代碼中,我希望用戶的輸入是q或負載,但是負載將不斷變化:

load "sample.csv"
load "test.csv"
load "helloworld.csv"

在我的代碼中,我將不斷變化的輸入表示為X,但這並不符合我的預期。

幫助將不勝感激,謝謝。

正如其他人提到的那樣,問題在於您的模式匹配。

這是解決此問題的一種簡單方法(並且仍然具有可讀性)。

  1. answer分為單詞以進行匹配(帶有words功能)。
  2. 使用模式匹配中的第一個單詞。
  3. 如果要使用其余的“單詞”,只需unwords列表中其余unwords的單詞的單詞即可。

例:

main :: IO ()
main = do
    answer <- getLine
    case words answer of
        ("q":_)    -> putStrLn "I'm quitting!"
        ("load":x) -> putStrLn ("Now I will load " ++ unwords x)
        otherwise  -> putStrLn "Not sure what you want me to do!"

注意-您上面的x實際上是此處的unwords x

暫無
暫無

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

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