【发布时间】:2017-03-06 02:59:26
【问题描述】:
我觉得这是非常简单的问题之一,我只是不了解该语言。但是我正在尝试学习 Elixir,但我的程序并没有完全运行。我这里有一个最小的例子。
defmodule Foo do
def run(0) do
IO.puts("0")
end
def run(n) do
IO.puts(to_string n)
run(n - 1)
end
def go do
run(100)
end
end
# Foo.go
# spawn &Foo.go/0
现在,如果我取消注释底部的 Foo.go 行并使用 elixir minimal.exs 运行它,那么我会得到预期的输出,即从 100 到 0 的所有数字。如果我只取消注释 @987654324 @line,我一直没有得到任何输出。
但是,如果我取消注释这两行并运行程序,我会得到从 100 到 0 的数字(从第一行开始),然后是程序终止前的前几个数字(通常是 100 到 96 左右)原因。所以我真的不知道是什么导致进程在随机点终止。
值得指出的是,我产生这种困惑的原因是我试图使用mix 编译一个更大的项目,当程序似乎开始时,完成它的一小部分工作,然后终止因为mix 显然会在一段时间后停止运行。所以我也不确定运行 Elixir 程序的惯用方式是什么,因为mix 似乎在不久之后就会终止它。
【问题讨论】:
标签: concurrency elixir terminate