我可以用Elixir的内置OptionParser解析长篇论据吗?

sam*_*mvv 1 arguments elixir

我正在使用Elixir OptionParser,但我在解析长的虚假参数时遇到了问题.

最好,我想做这样的事情:

OptionParser.parse(argv, strict: ["db-username": :string, "db-password": :string])
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我到了Unknown option.

有人知道是否有可能以某种方式?

nie*_*aki 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"], [], []}
Run Code Online (Sandbox Code Playgroud)

当你将参数spec作为原子而不是字符串提供时,这会更自然,你可以这样做:db_username,而不是:"db-username".

这种行为被记录在案,但它很容易错过.