如何在顶层处理命令行参数?

问题描述:

我有一个程序需要命令行参数。源文件的相同是encode.ml。我想在顶层加载这个文件。如何在顶层处理命令行参数?

有没有办法将源文件加载到顶层,我们可以将它传递给命令行参数?

谢谢。

是的,用ocaml encode.ml arg1 arg2 etc调用你的顶层。下面的程序演示它:

$ cat args.ml 
let() = 
    Array.iteri (Printf.printf "%d -> %s\n") Sys.argv 

$ ocaml args.ml -h --help -help 
0 -> args.ml 
1 -> -h 
2 -> --help 
3 -> -help 
+0

以这种方式调用顶层,立即退出。我想要的是停留在顶层,以便我可以看到输入的参数。我的程序有20多个参数,我想检查这些值并修改它,看看哪一个会导致意外的行为。我想知道是否有办法告诉顶层的#use指示来采取论据。 – UnSat 2015-02-24 15:24:15

+0

对不起,但没有。但是你可以嘲笑它,首先用20个虚拟参数调用它,然后用'Sys.argv。(n) ivg 2015-02-24 16:38:25

+0

当我调用顶层为“$ ledit -l 100 ocaml -I _build/encode.ml arg1 arg2 arg3 ...”时,发生了什么事情,我回到shell提示'$'而不是提示'#'。所以我没有机会按照你的建议修改输入参数。 – UnSat 2015-02-24 22:19:42