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