Haskell - 输入&输出

Haskell - 输入&输出 首页 / Haskell入门教程 / Haskell - 输入&输出

到目前为止,我们讨论的所有示例本质上都是静态的,在本章中,我们将学习与用户动态交流,我们将学习Haskell中使用的不同输入和输出技术。

文件和流

到目前为止,我们已经对程序本身中的所有输入进行了硬编码,我们一直在从静态变量获取输入,现在,让我们学习如何从外部文件读取和写入。

无涯教程网

让我们创建一个文件并将其命名为" abc.txt",接下来,在此文本文件中输入以下行:"Welcome to  Learnfk"

接下来,我们将编写以下代码,这些代码将在控制台上显示此文件的内容,在这里,我们使用函数readFile()来读取文件,直到找到EOF字符为止。

main=do  
   let file="abc.txt" 
   contents <- readFile file 
   putStrLn contents   

上面的代码将读取文件" abc.txt"作为字符串,直到遇到任何文件结尾字符。这段代码将生成以下输出。

Welcome to Learnfk

观察到在终端上打印的内容均写入该文件中。

命令行参数

Haskell还提供了通过命令提示符来操作文件的函数,让我们回到终端并输入" ghci" 。然后,键入以下命令集-

let file="abc.txt" 
writeFile file "I am just experimenting here." 
readFile file 

在这里,我们创建了一个名为" abc.txt"的文本文件,接下来,我们使用 writeFile 命令在文件中插入了一条语句,最后,我们使用了命令 readFile 在控制台上打印文件的内容。我们的代码将产生以下输出-

链接:https://www.learnfk.comhttps://www.learnfk.com/haskell/haskell-input-and-output.html

来源:LearnFk无涯教程网

I am just experimenting here.

异常

Exception异常可被视为代码中的错误,在这种情况下,编译器在运行时无法获得预期的输出,像任何其他好的编程语言一样,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 

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出gRPC -〔李林锋〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

后端技术面试 38 讲 -〔李智慧〕

Redis核心技术与实战 -〔蒋德钧〕

自动化测试高手课 -〔柳胜〕

说透元宇宙 -〔方军〕

JavaScript进阶实战课 -〔石川〕

超级访谈:对话毕玄 -〔毕玄〕

Midjourney入门实践课 -〔Jovi〕

好记忆不如烂笔头。留下您的足迹吧 :)