如何将字符串列表转换为整数列表?

rdn*_*hoi 2 elixir

我试图请求一个数字列表(例如:"1 2 3 4 5 6")并输出一个整数列表(例如:"[1,2,3,4,5,7]").我想出了以下代码:

IO.gets ("Enter a list: ")
|> String.trim
|> String.split
|> Enum.map(&String.to_integer/1)
Run Code Online (Sandbox Code Playgroud)

这将无法编译并给我以下错误:

== Compilation error in file test.ex ==
** (ArgumentError) argument error
    :erlang.binary_to_integer("Enter")
    (elixir) lib/enum.ex:1270: Enum."-map/2-lists^map/1-0-"/2
    test.ex:4: (file)
    (elixir) lib/kernel/parallel_compiler.ex:121: anonymous fn/4 in 
Kernel.ParallelCompiler.spawn_compilers/1
Run Code Online (Sandbox Code Playgroud)

我通过iex一次一行地运行这个代码,使用每个函数的结果作为下一个的输入并实现正确格式化的列表但是当我把它们放在一个文件中并运行它时,它甚至都不会编译...

任何援助都会很棒.

Ale*_*kin 11

问题是IO.gets在左括号和左括号之间的空格.这可行:

IO.gets("Enter a list: ")
|> String.trim
|> String.split
|> Enum.map(&String.to_integer/1)
Run Code Online (Sandbox Code Playgroud)

运营商优先事项:

#  3           1
IO.inspect (IO.inspect(42, label: "foo"))
#     2 
|> IO.inspect(label: "bar")

foo: 42
bar: 42
42
Run Code Online (Sandbox Code Playgroud)

让我们看看这里发生了什么:我放置了表示执行顺序的数字.第一个执行的是"foo",然后是"bar",然后才进行首次检查.这是因为Elixir允许(尽管不鼓励)没有括号的函数调用,并且管道|>优先于函数调用.