
- Haskell 教程
- Haskell - 首頁
- Haskell - 概述
- Haskell - 環境搭建
- Haskell - 基本資料模型
- Haskell - 基本運算子
- Haskell - 決策機制
- Haskell - 型別和型別類
- Haskell - 函式
- Haskell - 函式詳解
- Haskell - 函式組合
- Haskell - 模組
- Haskell - 輸入與輸出
- Haskell - Functor (函子)
- Haskell - Monad (單子)
- Haskell - Zipper (拉鍊)
- Haskell 有用資源
- Haskell - 快速指南
- Haskell - 有用資源
- Haskell - 討論
Haskell - 輸入與輸出
到目前為止,我們討論的所有示例都是靜態的。在本章中,我們將學習如何與使用者動態互動。我們將學習Haskell中使用的不同的輸入和輸出技術。
檔案和流
到目前為止,我們一直在程式中硬編碼所有輸入。我們一直在從靜態變數獲取輸入。現在,讓我們學習如何從外部檔案讀取和寫入。
讓我們建立一個檔案並將其命名為“abc.txt”。接下來,在此文字檔案中輸入以下幾行:“歡迎來到 Tutorialspoint。在這裡,您將獲得學習 Haskell 的最佳資源。”
接下來,我們將編寫以下程式碼,該程式碼將顯示此檔案的內容到控制檯。在這裡,我們使用 `readFile()` 函式讀取檔案,直到找到 EOF 字元。
main = do let file = "abc.txt" contents <- readFile file putStrLn contents
上述程式碼將讀取“abc.txt”檔案作為一個字串,直到遇到任何檔案結束符。這段程式碼將生成以下輸出。
Welcome to Tutorialspoint Here, you will get the best resource to learn Haskell.
觀察一下,終端上列印的內容都寫在該檔案中。
命令列引數
Haskell 還提供了透過命令提示符操作檔案的功能。讓我們回到終端並鍵入“ghci”。然後,鍵入以下命令集:
let file = "abc.txt" writeFile file "I am just experimenting here." readFile file
在這裡,我們建立了一個名為“abc.txt”的文字檔案。接下來,我們使用 `writeFile` 命令在檔案中插入了一條語句。最後,我們使用 `readFile` 命令將檔案的內容列印到控制檯。我們的程式碼將產生以下輸出:
I am just experimenting here.
異常
異常可以被認為是程式碼中的錯誤。在這種情況下,編譯器在執行時無法獲得預期的輸出。與任何其他優秀的程式語言一樣,Haskell 提供了一種實現異常處理的方法。
如果您熟悉 Java,那麼您可能知道 Try-Catch 塊,我們通常在其中丟擲錯誤並在 `catch` 塊中捕獲相同的錯誤。在 Haskell 中,我們也有相同的函式來捕獲執行時錯誤。
`try` 函式的函式定義如下所示:“`try :: Exception e => IO a -> IO (Either e a)`”。請看下面的示例程式碼。它演示瞭如何捕獲“除以零”異常。
import Control.Exception main = do result <- try (evaluate (5 `div` 0)) :: IO (Either SomeException Int) case result of Left ex -> putStrLn $ "Caught exception: " ++ show ex Right val -> putStrLn $ "The answer was: " ++ show val
在上面的示例中,我們使用了 `Control.Exception` 模組的內建 `try` 函式,因此我們提前捕獲了異常。上述程式碼將在螢幕上產生以下輸出。
Caught exception: divide by zero