我對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