: Ich bin Elixier mit harter Zeit, die Variablen zu aktualisieren. Hilfe benötigen. Ich habe zwei KartenWie innen Funktion in Elixier Boolesche Variable aktualisieren
firstMsg = %{msg: "Hello", vt: %{"p1" => 1, "p2" => 1, "p3" => 1}, from: "p3"}
state = %{ :name => "p2",
vector: %{"p1" => 0, "p2" => 0, "p3" => 0},
participants: ["p1","p3","p2"]
}
ich diese zwei Karten in einer Funktion bin vorbei, die mich entweder wahr oder falsch, je nach bestimmten Bedingungen zurückgeben sollten.
defmodule Testfunc do
def keep_in_pending(firstMsg, state) do
if (firstMsg.vt[firstMsg.from] == state.vector[firstMsg.from] + 1) do
#IO.puts("Origin proc clock is 1 step ahead from rcvd process Origin clk")
checking = false #initially set this to false
for n <- state.participants do
if n != firstMsg.from do #filter the origin processes
IO.puts("#{n}: #{inspect firstMsg.vt[n]} <= #{n}: #{inspect state.vector[n]} ")
checking = cond do
(firstMsg.vt[n] <= state.vector[n]) -> false
(firstMsg.vt[n] > state.vector[n]) -> true
end
end
end
end
checking
end
end
out = Testfunc.keep_in_pending(firstMsg, state)
IO.puts("#{inspect out}")
Es gibt mir immer falsch (Wert, den ich ursprünglich zugewiesen), und aktualisiert nicht. Ich denke, der Umfang der Variablen beschränkt sich auf das innere "Wenn". Kann jemand mir einen Vorschlag geben, wie ich diesen Code so anordnen kann, dass er mir den richtigen aktualisierten booleschen Wert zurückgibt?
Also in diesem Fall sollte es zurückgeben mich wahr, weil firstMsg.vt [ "p1"]> state.vector [ "p1"].
Aber es bringt mich immer in allen Fällen falsch zurück. –
Seltsam, ich werde "wahr", mit allen Informationen, die Sie gaben. –