将单个字符串写入新文件 (SML)



我正在编写一个返回字符串的函数,问题是我想将此字符串存储在一个新文件中,如果在计算机上找不到它,则应创建该文件。函数创建的每个字符串都应一个接一个地出现在同一个文本文件中。如何在 SML 中实现这一点?我已经坚持了一段时间了,可能真的需要一些帮助。

我想使用它的代码部分看起来像(show(solveAux(nls, sl, match(nl, sl, [])))是有问题的字符串):

fun solve (nl::nls, sl) = let
fun solveAux ([], sl, cnll) = cnll
  | solveAux (nl::nls, sl, cnll) = List.concat(map(fn cnl => solveAux(nls, sl, match(nl, sl, cnl))) cnll)
in
    show(solveAux(nls, sl, match(nl, sl, [])))
end;

我认为这应该可以解决问题:

fun solve (nl::nls, sl) = 
let
  val writestream = TextIO.openAppend "test.txt";
  fun solveAux ([], sl, cnll) = cnll
    | solveAux (nl::nls, sl, cnll) = List.concat(map(fn cnl => solveAux(nls, sl, match(nl, sl, cnl))) cnll)
in
  TextIO.output (writestream, show(solveAux(nls, sl, match(nl, sl, []))))
  TextIO.closeOut writestream;
end

但显然不是...

可以使用 TextIO 结构写入文件。

openAppend 允许您在追加模式下打开文件,如果文件已存在,则允许您向文件追加行,或者如果不存在,则创建文件。此函数提供可与其他 IO 函数一起使用的输出流。

输出

函数允许您写入输出流。例如:

TextIO.output(yourStream, "This is a message to write to your stream.");

请注意,您需要记住刷新或关闭流,然后才能确定数据实际写入磁盘上的文件。在执行其中一项操作之前,编译器可能会选择延迟将数据写入磁盘,以加快执行速度。

最新更新