これは本当に単純な問題の1つで、私が言語について理解していないものがあると感じました。しかし、私はElixirを学ぼうとしており、私のプログラムは完全に実行されていません。私はここで最小の例を持っています。私は一番下にFoo.go
行のコメントを解除し、elixir minimal.exs
でそれを実行した場合、私は唯一のspawn &Foo.go/0
行のコメントを解除した場合プログラムは早めに終了するようです。
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
さて、私は0にダウン100からの数字のすべてをある意図した出力を取得します、私は一貫して何の出力も得られません。
しかし、両方の行のコメントを外してプログラムを実行すると、プログラムが終了する前に最初の数(通常は100〜96程度)が100から0になります何らかの理由で。だから私は本当に何が原因でプロセスがランダムな時点で終了するのか分からない。
この混乱が私のために発生した理由は、私がmix
を使用して、より大きなプロジェクトをコンパイルしようとしていたことです。プログラムが開始されたように見え、仕事の一部をして終了しました。 mix
はちょっとしたことで明らかに動作を停止します。だから私は、エリクシールプログラムを実行するための慣用的な方法がどちらかというと、mix
がとにかくしばらくしてそれを終了するように見えることを考えればわかりません。
ありがとうございました。私の「ミックス」の問題は、エリクシールのプロセスに対する私の誤解と、他の言語がプロセスと呼ぶものとから直接生じていました。 –
もう一つの可能な解決策は、 'elixir --ho-halt foo 'でプログラムを実行することです。実行後Erlang VMを停止させることはありません。 Ctrl + Cを2回押してプログラムを終了することができます。 –