module Arg: Arg
type
spec =
| |
Unit of |
(* | 以 unit 參數呼叫函式 | *) |
| |
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
會識別兩個 unit 選項,-help
和 --help
,這兩個選項會將 usage_msg
和選項清單列印到標準輸出,並結束程式。您可以透過在 speclist
中指定您自己的 -help
和 --help
選項來覆寫此行為。
val parse_dynamic : (key * spec * doc) list ref ->
anon_fun -> usage_msg -> unit
與 Arg.parse
相同,不同之處在於 speclist
參數是一個參考,並且可以在解析期間更新。此功能的一個典型用法是解析以下形式的命令列
options
,其中選項清單取決於 subcommand 參數的值。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.parse_argv
在發生錯誤時也會引發 Arg.Bad
。
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
透過根據關鍵字的長度在第一個對齊分隔符號 (跳格字元或如果找不到跳格字元則為空格) 插入空格來對齊文件字串。如果您想對齊整個字串,請在 doc 字串中使用對齊分隔符號作為第一個字元。對應於 Symbol
參數的 doc 字串會在下一行對齊。
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
相同,但假設命令列參數以空字元終止。
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
相同,但使用空字元而不是換行符號作為終止符號。