【问题标题】:How to output a string list to a textfile in SML?如何将字符串列表输出到 SML 中的文本文件?
【发布时间】:2017-09-29 11:03:11
【问题描述】:

我正在尝试编写一个方法,当被调用时,给定一个字符串列表和输出文件的名称,它将每个元素输出到 SML 中的输出文件。我试过这个,但它似乎不起作用。

fun quit(outFile: string, list: string list) =
  let
    val outStream = TextIO.openOut outFile
    fun out(xs : string list) =  
          case xs of
              [] => (TextIO.closeOut outStream)
            | x::xs' => (TextIO.output(outStream, x); out(xs'))
  in
    out(list)
  end

【问题讨论】:

  • 你能说得更具体点吗?有什么不好的地方?

标签: string list file-io sml smlnj


【解决方案1】:

您的代码有效,但它将所有字符串连接在一起,它们之间没有空格。想必这不是你想要的。如果您希望每个项目位于单独的行上,则必须手动添加换行符。在 Windows 上,您可以这样做:

fun quit(outFile: string, list: string list) =
  let
    val outStream = TextIO.openOut outFile
    fun out(xs : string list) =  
          case xs of
              [] => (TextIO.closeOut outStream)
            | x::xs' => (TextIO.output(outStream, x ^ "\r\n"); out(xs'))
  in
    out(list)
  end;

(在 Linux 或 Mac 上,您只需使用 "\n")。

或者,如果您希望所有内容都在一行中,但在元素之间使用逗号等分隔符,您可以先将字符串列表提供给函数concatWith,然后将单个(分隔的)字符串输出到文本文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多