我已經得到了這個case語句,它給出了一個錯誤'variable constant1 is unused'。它似乎忽略了變量並返回頂部,所以變量顯然沒有範圍。如果我用數字1替換常量,那麼它就可以工作。 Elixir的最佳做法是什麼?Elixir:在case語句中使用變量
defmodule Main
do
def constant1, do: 1
def constant2, do: 1
def constant3, do: 1
x = 1
y = 0
z = 0
{a, b, c, d} =
case {x, y, z} do
{constant1, constant2, constant3} -> {1, 2, 3, 4}
{constant1, constant2, _} -> {5, 6, 7, 8}
{constant1, _, _} -> {9, 10, 11, 12}
{_, _, _} -> {13, 14, 15, 16}
end
IO.inspect {a, b, c, d}
end
這裏是輸出:
warning: variable constant1 is unused
Untitled 9:15
{1, 2, 3, 4}
改變常數變量也不起作用。
非常感謝您的回答。我將如何使用全局常量來代替變量?我嘗試使用@ constant1語法,但我得到了一元運算符^的錯誤無效參數,預計現有變量得到:^ @ constant1 – iphaaw
您不能。 https://github.com/elixir-lang/elixir/issues/2963基本上,這是因爲Elixir模塊屬性在編譯時只有_和(不像Erlang)不存在模塊中。 – mudasobwa
我可以有一個全局變量嗎? – iphaaw