2017-02-15 49 views
1

我正在使用Elixir的OptionParser,但我在解析長虛線參數時遇到問題。我可以使用Elixir的內置OptionParser解析長參數嗎?

最好,我願做這樣的事情:

OptionParser.parse(argv, strict: ["db-username": :string, "db-password": :string]) 

但這似乎並沒有工作。我得到Unknown option

有人知道它是否有可能?

回答

5

OptionParser有這個(稍微奇怪)的行爲,它將您的選項名稱從使用下劃線更正爲使用破折號,並且不允許您自己指定帶破折號的參數。

iex(1)> argv = ["--db-username", "foo"] 
["--db-username", "foo"] 
iex(2)> OptionParser.parse(argv, strict: ["db-username": :string, "db-password": :string]) 
{[], ["foo"], [{"--db-username", nil}]} 
iex(3)> OptionParser.parse(argv, strict: ["db_username": :string, "db_password": :string]) 
{[db_username: "foo"], [], []} 

這使得它更自然一點,當你提供的參數符合規範爲原子而不是字符串,你可以做:db_username,而不是:"db-username"

此行爲is documented,但很容易錯過。

+1

謝謝澄清! – samvv

相關問題