当 Elixir 控制台卡住时......

有时你可能会意外地在 shell 中运行一些东西,最终会永远等待,从而阻止 shell:

iex(2)> receive do _ -> :stuck end

在这种情况下,请按 Ctrl-g。你会看到的:

User switch command

按顺序输入以下命令:

  • k(杀死 shell 进程)
  • s(启动一个新的 shell 进程)
  • c(连接到新的 shell 进程)

你将最终进入一个新的 Erlang shell:

Eshell V8.0.2  (abort with ^G)
1>

要启动 Elixir shell,请键入:

'Elixir.IEx.CLI':local_start().

(别忘了最后一点!)

然后你会看到一个新的 Elixir shell 进程:

Interactive Elixir (1.3.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> "I'm back"
"I'm back"
iex(2)>

要转义等待更多输入模式(由于未闭合的引号,括号等),请输入 #iex:break ,然后输入回车符( ⏎ ):

iex(1)> "Hello, "world"
...(1)>
...(1)> #iex:break
** (TokenMissingError) iex:1: incomplete expression
    
iex(1)>

当复制粘贴相对较​​大的片段将控制台转为等待更多输入模式时,上述内容特别有用。