ale*_*inn 4 parameter-passing nim-lang
我使用以下代码片段来解析命令行参数并将它们存储在表中。
var args = initTable[string, string]()
for kind, key, val in getopt():
args.add(key,val)
Run Code Online (Sandbox Code Playgroud)
=但是,只有当我传入命令行时它才有效
./mytool -i=somefile.txt
Run Code Online (Sandbox Code Playgroud)
在本例中,argsis {i: somefile.txt},这就是我想要的(键:值对)。
但如果我使用./mytool -i somefile.txtthen argsis {somefile.txt: , i: },这绝对不是我所期望的(两个键,没有值)。
不使用 解析参数的正确方法是什么=?
这是两种情况下 kind、key 和 val 的打印输出:
$ ./diceof -a=ACTGCTGTGTGCACAGTGTCACGTGT -b=ACTGCTGTGTGCACAGTGTCACGTGa
kind:cmdShortOption
key :a
val :ACTGCTGTGTGCACAGTGTCACGTGT
kind:cmdShortOption
key :b
val :ACTGCTGTGTGCACAGTGTCACGTGa
$ ./diceof -a ACTGCTGTGTGCACAGTGTCACGTGT -b ACTGCTGTGTGCACAGTGTCACGTGa
kind:cmdShortOption
key :a
val :
kind:cmdArgument
key :ACTGCTGTGTGCACAGTGTCACGTGT
val :
kind:cmdShortOption
key :b
val :
kind:cmdArgument
key :ACTGCTGTGTGCACAGTGTCACGTGa
val :
Run Code Online (Sandbox Code Playgroud)
当然,我可以检查是否val找到,如果没有添加上一个的下key一个val。但我正在寻找更优雅的解决方案。
argparse似乎是唯一的 Nim 包,它最终支持 POSIX 风格的参数解析,并自动形成应用程序帮助(使用)文本:
$ ./example -c=settings.cfg
Parsed opts: (config: "settings.cfg", help: false)
$ ./example -c settings.cfg
Parsed opts: (config: "settings.cfg", help: false)
$ ./example -h
example
Usage:
example [options]
Options:
-c, --config=CONFIG Configuration file
-h, --help Show this help
Parsed opts: (config: "", help: true)
Run Code Online (Sandbox Code Playgroud)
来源:
$ ./example -c=settings.cfg
Parsed opts: (config: "settings.cfg", help: false)
$ ./example -c settings.cfg
Parsed opts: (config: "settings.cfg", help: false)
$ ./example -h
example
Usage:
example [options]
Options:
-c, --config=CONFIG Configuration file
-h, --help Show this help
Parsed opts: (config: "", help: true)
Run Code Online (Sandbox Code Playgroud)