这是一个给初次编写OCaml程序且想知道命令行意义的人看的简略指南。
与C语言一样, 传给程序的参数存在一个数组里面。按照惯例, 数组名为argv.它可以在标准库的Sys模块中找到, 因此它的全称是Sys.argv.包括程序名的参数,它们的个数就是此数组的长度. 它可以通过Array.length函数取得。
下面的程序显示Sys.argv里的参数以及它们各自在数组中的位置:
open Printf let _ = for i = 0 to Array.length Sys.argv - 1 do printf "[%i] %s\n" i Sys.argv.(i) done
如果你把上面程序存为args.ml
, 并且运行ocaml args.ml arg1 arg2 arg3
,你将得到:
[0] args.ml [1] arg1 [2] arg2 [3] arg3
ocaml
其实是开启了一个子进程来运行这个argv是 args.ml arg1 arg2 arg3
的程序. 你也可以用 ocamlopt -o args args.ml
来编译你的程序,之后运行./args arg1 arg2 arg3
,你将得到:
[0] ./args [1] arg1 [2] arg2 [3] arg3
有一些库可以用来帮你处理命令行参数, 而不必你自己来扫描Sys.argv
数组:
Arg
是标准库的一个模块。OCaml版的Getopt
,与GNU getopt类似。