我正在编写一个返回字符串的函数,问题是我想将此字符串存储在一个新文件中,如果在计算机上找不到该文件,则应该创建该文件。函数创建的每个字符串都应该一个接一个地放在同一个文本文件中。如何在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
但显然不是......
答案 0 :(得分:2)
您可以使用TextIO结构写入文件。
openAppend允许您以追加模式打开文件,允许您在文件已存在时将行附加到文件,或者如果不存在则创建文件。此函数为您提供可与其他IO函数一起使用的输出流。
output函数允许您写入输出流。例如:
TextIO.output(yourStream, "This is a message to write to your stream.");
注意,在确定数据实际写入磁盘上的文件之前,您需要记住流flush或close。在您执行其中之一之前,编译器可能会选择延迟将数据写入磁盘,以加快执行速度。