字符串连接中ocaml中的空白命令行参数

时间:2013-12-16 11:51:34

标签: string command-line ocaml

您好我正在编写一个简单的程序来将字符串追加到文件中,

open String
let ()=
        let oc= open_out_gen [Open_creat; Open_text; Open_append] 0o640 Sys.argv.(1) in
        output_string oc (concat Sys.argv.(2) ["\n"]);
        close_out oc;

让我们假设输出文件是追加的 我像这样运行输出 ./append out“text”

虽然它正在创建输出文件,但它只打印新行,为什么Sys.argv(2)出现空?

1 个答案:

答案 0 :(得分:0)

你误用了String.concat:

concat Sys.argv.(2) ["\n"]

String.concat sep list表示它应附加list的所有元素,并在其间添加sep作为分隔符。如果列表只包含一个元素(您的情况),则无法放置分隔符。您应该使用^,即字符串之间的添加,默认情况下可用(不open String),"x" ^ "y"提供"xy"

此外,您应该避免从标准库中打开模块,完全限定的名称使程序更易于长期阅读和维护(使用String.concat而不是concat等)。