module Arg: Arg
type
spec =
| |
Unit of |
(* | 使用单元参数调用函数 | *) |
| |
Bool of |
(* | 使用布尔值参数调用函数 | *) |
| |
Set of |
(* | 将引用设置为 true | *) |
| |
Clear of |
(* | 将引用设置为 false | *) |
| |
String of |
(* | 使用字符串参数调用函数 | *) |
| |
Set_string of |
(* | 将引用设置为字符串参数 | *) |
| |
Int of |
(* | 使用整数参数调用函数 | *) |
| |
Set_int of |
(* | 将引用设置为整数参数 | *) |
| |
Float of |
(* | 使用浮点数参数调用函数 | *) |
| |
Set_float of |
(* | 将引用设置为浮点数参数 | *) |
| |
Tuple of |
(* | 根据 spec 列表获取多个参数 | *) |
| |
Symbol of |
(* | 使用其中一个符号作为参数,并使用该符号调用函数 | *) |
| |
Rest of |
(* | 停止解释关键字,并使用每个剩余参数调用函数 | *) |
| |
Rest_all of |
(* | 停止解释关键字,并使用所有剩余参数调用函数 | *) |
| |
Expand of |
(* | 如果要处理的剩余参数形式为 | *) |
描述与关键字关联的行为的具体类型。
typekey =
string
typedoc =
string
typeusage_msg =
string
typeanon_fun =
string -> unit
val parse : (key * spec * doc) list -> anon_fun -> usage_msg -> unit
Arg.parse speclist anon_fun usage_msg
解析命令行。 speclist
是三元组列表 (key, spec, doc)
。 key
是选项关键字,它必须以 '-'
字符开头。 spec
指定选项类型以及在命令行上找到此选项时要调用的函数。 doc
是该选项的一行描述。 anon_fun
在匿名参数上调用。 spec
和 anon_fun
中的函数按其参数在命令行中出现的顺序调用。
如果出现错误,Arg.parse
会退出程序,并在标准错误输出以下错误消息:
usage_msg
doc
字符串。注意:具有空 doc
字符串的选项不会包含在列表中。为了让用户能够指定以 -
开头的匿名参数,例如在 speclist
中包含 ("-", String anon_fun, doc)
。
默认情况下,parse
识别两个单元选项,-help
和 --help
,它们将把 usage_msg
和选项列表打印到标准输出,并退出程序。您可以通过在 speclist
中指定自己的 -help
和 --help
选项来覆盖此行为。
val parse_dynamic : (key * spec * doc) list ref ->
anon_fun -> usage_msg -> unit
与 Arg.parse
相同,只是 speclist
参数是引用,并且可以在解析过程中更新。此功能的典型使用场景是解析以下形式的命令行:
options
其中选项列表取决于子命令参数的值。val parse_argv : ?current:int ref ->
string array ->
(key * spec * doc) list -> anon_fun -> usage_msg -> unit
Arg.parse_argv ~current args speclist anon_fun usage_msg
解析数组 args
,就好像它是命令行一样。它使用并更新 ~current
的值(如果提供),或者 Arg.current
。您必须在调用 parse_argv
之前设置它。 current
的初始值是在数组中程序名称(参数 0)的索引。如果出现错误,Arg.parse_argv
会抛出 Arg.Bad
,并将错误消息作为参数。如果给出了选项 -help
或 --help
,Arg.parse_argv
会抛出 Arg.Help
,并将帮助消息作为参数。
val parse_argv_dynamic : ?current:int ref ->
string array ->
(key * spec * doc) list ref ->
anon_fun -> string -> unit
与 Arg.parse_argv
相同,只是 speclist
参数是引用,并且可以在解析过程中更新。见 Arg.parse_dynamic
。
val parse_and_expand_argv_dynamic : int ref ->
string array ref ->
(key * spec * doc) list ref ->
anon_fun -> string -> unit
与 Arg.parse_argv_dynamic
相同,只是 argv
参数是引用,并且可以在解析 Expand
参数时更新。见 Arg.parse_argv_dynamic
。
val parse_expand : (key * spec * doc) list -> anon_fun -> usage_msg -> unit
与 Arg.parse
相同,只是允许使用 Expand
参数,并且不会更新 Arg.current
引用。
exception Help of string
当用户请求帮助时,由 Arg.parse_argv
抛出。
exception Bad of string
spec
或 anon_fun
中的函数可以使用错误消息抛出 Arg.Bad
来拒绝无效参数。 Arg.Bad
也会由 Arg.parse_argv
在出现错误时抛出。
val usage : (key * spec * doc) list -> usage_msg -> unit
val usage_string : (key * spec * doc) list -> usage_msg -> string
返回 Arg.usage
将在提供相同参数时打印的消息。
val align : ?limit:int ->
(key * spec * doc) list -> (key * spec * doc) list
通过在第一个对齐分隔符(制表符或,如果未找到制表符,则为空格)处插入空格来对齐文档字符串,空格数取决于关键字的长度。如果要对齐整个字符串,请使用对齐分隔符作为文档字符串的第一个字符。与 Symbol
参数相对应的文档字符串将在下一行对齐。
limit
:关键字和消息长度大于 limit
的选项将不会用于计算对齐。val current : int ref
正在处理的参数在 Sys.argv
中的位置。您可以更改此值,例如强制 Arg.parse
跳过某些参数。 Arg.parse
使用 Arg.current
的初始值作为参数 0(程序名称)的索引,并从下一个元素开始解析参数。
val read_arg : string -> string array
Arg.read_arg file
从文件 file
中读取以换行符结尾的命令行参数。
val read_arg0 : string -> string array
与 Arg.read_arg
相同,但假设以 null 字符结尾的命令行参数。
val write_arg : string -> string array -> unit
Arg.write_arg file args
将参数 args
以换行符结尾写入文件 file
中。如果 args
中的任何参数包含换行符,请改用 Arg.write_arg0
。
val write_arg0 : string -> string array -> unit
与 Arg.write_arg
相同,但使用 null 字符作为终止符而不是换行符。