3
我正在使用下面的代码片断来解析命令行参数并将它们存储在一个表中。如何在NIM中通过命令行正确传递参数?
var args = initTable[string, string]()
for kind, key, val in getopt():
args.add(key,val)
但是,它只能如果我在命令行
./mytool -i=somefile.txt
通过=
在这种情况下,args
是{i: somefile.txt}
,这就是我想要的(关键字:值对)。
但是,如果我使用./mytool -i somefile.txt
然后args
是{somefile.txt: , i: }
,这绝对不是我所期望的(两个键和没有值)。
什么是不使用=
来解析参数的正确方法?
这里的样,在两种情况下键和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 :
当然,如果val
发现我可以检查,如果不添加下一个key
作为前一个val
。但我正在寻找更优雅的解决方案。
你应该检查'kind',这很重要。打印出来,你会看到。 – dom96
这是我的观点,为什么我需要添加'='来解析正确的?避免使用'='来正确解析参数的最好方法是什么? –
没有办法,AFAIK就是这个解析器的工作原理。您可以使用其他软件包(如docopt.nim)代替实现此目的。 – dom96