Когда вы задаете :all
для IO.read/2
, он будет читать до тех пор, пока не получит символ EOF
(конец файла). Один включается, если вы передадите трубку в свой скрипт эликсира:
$ echo "2 3 4" | elixir main.exs
9
Вы также можете отправить символ EOF из терминала. В случае терминалов Linux это часто ctrl+d
:
$ elixir main.es
4
5
6
<ctrl+d here>15
Однако вы захотите изменить свою функцию сокращения, поскольку вызов String.to_integer/1
on для целого числа вызовет ошибку. И мой пример позволит IO.read/2
по умолчанию :stdio
.
defmodule SumOfTwo do
def main() do
:all
|> IO.read()
|> String.split()
|> Enum.reduce(fn x, acc -> acc + String.to_integer(x) end)
|> IO.puts()
end
end