2016-08-06 6 views
0

Ich baue einen einfachen CLI-App mit Elixier mit dem folgenden Code als meine Parse-FunktionElixir Befehlszeile app mit der Liste als Parameter

def parse_args(args) do 
options = OptionParser.parse(args) 

case options do 
    {[list: list], _, _} -> [list] 
    _ -> :help 
end 
end 

die App mit

./app --list one,two,three 

meinem Problem Aufruf ist wie man eine durch Komma getrennte Zeichenkette (binär) in eine Liste oder einen anderen besseren Weg umwandelt, um dies zu tun.

Antwort

2

können Sie entweder Split mit String.split/2:

iex(1)> {[list: list], _, _} = OptionParser.parse(["--list", "one,two,three"]) 
{[list: "one,two,three"], [], []} 
iex(2)> String.split(list, ",") 
["one", "two", "three"] 

oder verwenden Sie die strict: [list: :keep] Option und die Argumente als ./app --list one --list two --list three passieren:

iex(1)> {parsed, _, _} = OptionParser.parse(["--list", "one", "--list", "two", "--list", "three"], strict: [list: :keep]) 
{[list: "one", list: "two", list: "three"], [], []} 
iex(2)> Keyword.get_values(parsed, :list) 
["one", "two", "three"] 

ich das erste verwenden würde, wenn die Saiten ein Komma enthalten (In diesem Fall könnten Sie ein anderes Trennzeichen verwenden).

Verwandte Themen