You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unison中从标准输入读取内容及Text类型数据?

在Unison中读取标准输入及Text类型数据

基础读取操作

Unison的标准库base提供了直接操作标准输入的IO函数,核心都在Text.IO模块下——因为Unison中默认的字符串类型就是Text,所以读取标准输入的操作直接返回Text类型结果:

读取单行输入

使用Text.IO.getLine函数,它会读取标准输入的一行内容(直到换行符),返回IO Text类型:

-- 读取一行输入并打印输出
demoReadLine : IO ()
demoReadLine = do
  inputLine <- Text.IO.getLine
  Text.IO.printLine ("你输入的单行内容: " ++ inputLine)

-- 运行示例
> run demoReadLine

读取全部输入

如果需要一次性读取标准输入的所有内容(比如处理文件重定向输入),可以用Text.IO.readAll,它会读取到输入流结束,返回IO Text类型:

-- 读取全部输入并打印内容长度
demoReadAll : IO ()
demoReadAll = do
  allContent <- Text.IO.readAll
  let contentLength = Nat.toText (Text.length allContent)
  Text.IO.printLine ("输入内容总长度: " ++ contentLength)

-- 运行示例
> run demoReadAll

读取单个字符

如果需要逐字符读取输入,可用Text.IO.getChar,它返回IO (Maybe Char)——当输入流结束时会返回Nothing:

-- 逐字符读取直到输入结束
demoReadChars : IO ()
demoReadChars = loop
  where
    loop = do
      maybeChar <- Text.IO.getChar
      case maybeChar of
        Nothing -> Text.IO.printLine "\n输入结束"
        Just c -> do
          Text.IO.print (Text.singleton c)
          loop

-- 运行示例
> run demoReadChars

关于Text类型的读取说明

Unison中Text是原生的UTF-8编码字符串类型,上述所有标准输入读取函数返回的都是Text,不需要额外的类型转换。如果需要处理二进制输入(非文本数据),则需要使用Blob.IO模块的相关函数,但这不属于Text类型的范畴。

内容的提问来源于stack exchange,提问作者bbarker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:09:11