[英]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,但這並不符合我的預期。
幫助將不勝感激,謝謝。
正如其他人提到的那樣,問題在於您的模式匹配。
這是解決此問題的一種簡單方法(並且仍然具有可讀性)。
answer
分為單詞以進行匹配(帶有words
功能)。 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.