我想用OCaml中的參數解析命令行選項。OCaml - 使用參數解析帶參數的命令行選項
標準庫的模塊Arg
似乎做我需要的一切,並有一些教程解釋如何使用此模塊。
我的問題是,當一個選項的參數丟失時,它們似乎都共享相同的奇怪行爲。例如,從與this example./a.out -d
執行程序產生以下輸出:
./a.out: option '-d' needs an argument.
usage: ./a.out [-b] [-s string] [-d int]
-b : set somebool to true
-s : what follows -s sets some string
-d : some int parameter
-help Display this list of options
--help Display this list of options
./a.out: ./a.out: option '-d' needs an argument.
usage: ./a.out [-b] [-s string] [-d int]
-b : set somebool to true
-s : what follows -s sets some string
-d : some int parameter
-help Display this list of options
--help Display this list of options
.
usage: ./a.out [-b] [-s string] [-d int]
-b : set somebool to true
-s : what follows -s sets some string
-d : some int parameter
-help Display this list of options
--help Display this list of options
我無法找出爲什麼錯誤/用法消息被打印三次。這也發生在我在網上找到的所有其他代碼示例中。這是Arg
模塊中的問題,還是在這些示例中以某種方式未正確使用?
你使用什麼版本的編譯器? (我已經設法在4.04.2下現在重現) – RichouHunter
使用OCaml 4.02.3運行不會導致此行爲。我建議你檢查一下[OCaml bug-tracker](https://caml.inria.fr/mantis/view_all_bug_page.php),看看這個問題是否曾經被報告過。 :) – RichouHunter