我已经得到了这个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