Мне нужно протестировать некоторый поток входных данных и использовать «IO.read», но после ввода данных я не могу выйти из этого режима, CTRL-Z/X/C/D не помогает (он завершает весь iex). Итак, как правильно использовать команду EOF для этого режима? Спасибо!
Как выйти после запуска IO.read(:stdio, :all) в Elixir iex?
Ответы (1)
TL;DR: используйте ^G
, а затем j
, i [nn]
и c [nn]
.
Как в erl
, так и в iex
оболочках вы всегда можете ^G
войти в режим «Команда переключения пользователя». Введите h
для помощи там.
iex|1 ▶ IO.read :stdio, :all
^G
User switch command
--> j
1* {erlang,apply,[#Fun<Elixir.IEx.CLI.1.96155272>,[]]}
--> i 1
--> c 1
{:error, :interrupted}
iex|2 ▶
Примечание: правильное завершение EOF
будет ^D
во всех терминалах. Честно говоря, я понятия не имею, почему это не работает должным образом на консолях erl
/iex
.
person
Aleksei Matiushkin
schedule
07.06.2018
Странно, но у меня это не работает на MacOS 10.13. После
c 1
он не возвращает значение, а просто переходит в то же состояние, что и до нажатия ^G
.
- person Dogbert; 07.06.2018
@Dogbert о, спасибо за острый глаз; Я скопировал один из своих экспериментов, не последний удачный. Следует прервать работу, прежде чем переключиться на нее. Обновлено.
- person Aleksei Matiushkin; 07.06.2018
Поскольку все входные данные попадают в ваш
IO.read
, ваш код должен каким-то образом сделать эти данные доступными. Для этого можно использовать ETS или Agent
или что-то подобное.
- person Aleksei Matiushkin; 08.06.2018
^D
. - person Aleksei Matiushkin   schedule 07.06.2018iex
сессии по неизвестной причине. - person Aleksei Matiushkin   schedule 07.06.2018