私は先生からこのコードを受け取りました。私はこのコードが何をしているかに悩まされています。これまで私が知っていたのは、[x1, y1 | z1] = Output2.abc(3)
が呼び出されたため、abc(2)
ファンクションはy
という新しいプロセスを生成します。次に、値2をy
に送信します。 2を受け取ったとき、私は受け取っているものについています。 z -> z
の意味は?エリクサー、このプログラムは何をしていますか?
また、profは `x1、y1が何であるかを尋ねます。私はこれらの変数がこのコードのどこにあるのか分かりません。もし誰かがこれで私を導くことができれば、それは非常に高く評価されます。おかげ
defmodule Output2 do
def abc(x) do
y = spawn_link(__MODULE__, :n, [self()])
send y, x
receive do
z -> z
end
end
def n(z) do
receive do
v -> send z, n(v * v, v)
end
end
defp n(x, x), do: [x]
defp n(x, y), do: [y | n(x, y + y)]
end
[x1, y1 | z1] = Output2.abc(2)
「x1」と「x2」が一番下に設定されます。しかし、 'x2'や' y2'がどこに設定されているのか分かりません。再帰の参照:http://elixir-lang.org/getting-started/recursion.html – BenMorganIO