输入和输出
前面的所有例子都是静态的。在本章中,我们将学习与用户动态通信。我们将学习Haskell中使用的不同输入和输出技术。
文件和流
到目前为止,我们对程序中的所有输入进行了硬编码本身。我们一直在从静态变量中获取输入。现在,让我们学习如何从外部文件中读取和写入。
让我们创建一个文件并将其命名为"abc.txt"。接下来,在此文本文件中输入以下行:"欢迎使用Tutorialspoint。在这里,您将获得学习Haskell的最佳资源。"
接下来,我们将编写以下代码,在控制台上显示此文件的内容。在这里,我们使用readFile()函数读取文件,直到找到EOF字符。
main = do
let file ="abc.txt"
内容< - readFile文件
putStrLn内容
上面的代码将读取文件"abc.txt"作为String,直到遇到任何End of File字符。这段代码将生成以下输出。
欢迎使用Tutorialspoint
在这里,您将获得学习Haskell的最佳资源。
观察终端上打印的内容是否写入该文件。
命令行参数
Haskell还提供了通过命令提示符操作文件的工具。让我们回到终端并输入"ghci"。然后,键入以下命令集−
let file ="abc.txt"
writeFile file"我只是在试验这里。"
readFile文件
这里,我们创建了一个名为"abc.txt"的文本文件。接下来,我们使用命令 writeFile 在文件中插入了一个语句。最后,我们使用命令 readFile 在控制台上打印文件的内容。我们的代码将生成以下输出−
我只是在这里进行实验。
异常
异常可被视为代码中的错误。这是编译器在运行时没有获得预期输出的情况。像任何其他优秀的编程语言一样,Haskell提供了一种实现异常处理的方法。
如果您熟悉Java,那么您可能知道我们通常会抛出错误的Try-Catch块在 catch 块中捕获相同的内容。在Haskell中,我们也有相同的函数来捕获运行时错误。
try 的函数定义看起来像"try :: Exception e => IO a - > IO(要么是ea)"。看一下下面的示例代码。它显示了如何捕获"除以零"异常。
import Control.Exception
main = do
result< - try(evaluate(5`div` 0)):: IO(SomeException Int)
结果
左前 - > putStrLn $"Caught exception:"++ show ex
Right val - > putStrLn $"答案是:"++ show val
在上面的例子中,我们使用了内置的 try 函数 Control.Exception 模块,因此我们预先捕获异常。上面的代码将产生屏幕下方的输出。
捕获异常:除以零