我对Elixir非常陌生,这个简单的问题让我发疯。Elixir:在if语句中设置变量
a = 0
if true do
a = 1 + 1
end
a = a + 1
IO.puts (a)
有趣的是这给正确的值也给出了一个警告:
warning: the variable "a" is unsafe as it has been set inside a case/cond/receive/if/&&/||. Please explicitly return the variable value instead. For example:
case int do
1 -> atom = :one
2 -> atom = :two
end
should be written as
atom =
case int do
1 -> :one
2 -> :two
end
Unsafe variable found at:
Untitled:5
3
我不明白的警告消息。 Elixir的最佳做法是什么?
更新:这种情况呢?
a = 0
b = 0
if true do
a = 1 + 1
b = 2 + 2
end
a = a + 1
b = b + 2
IO.puts (a)
IO.puts (b)
如果我想在同一个if语句中更新两个值,那么怎么办?即a和b。嵌套ifs呢? – iphaaw
然后你可以使用模式匹配'{a,b} =如果真是{a + 1,b + 2} else {a,b} end' –
当我完全理解你在说什么时,它不会对我有很大的意义。我必须坚持使用更传统的编程技术。如果我有一个复杂的数学问题来解决需要改变几个嵌套ifs的40个变量,那么我必须为每个嵌套if语句定义{a,..,a40}?这将会产生一些非常难看的代码。我确信我必须以一种老式错误的方式来思考这个问题。谢谢。 – iphaaw