Я очень новичок в 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
Я не понимаю, предупреждающее сообщение. Каков наилучший способ сделать это в Эликсире?
Обновление: Как насчет этого состояния?
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} = if true do {a + 1, b + 2} else {a, b} end' –
Где, как я полностью понимаю, что вы говорите, это не Мне очень нравится. Я должен застрять в моих путях более обычных методов программирования. Если у меня возникает сложная математическая проблема, которая должна изменить 40 переменных с несколькими вложенными ifs, тогда я должен определить {a, .., a40} для каждого вложенного оператора if? Это будет сделано для очень уродливого кода. Я уверен, что я должен думать об этой проблеме старомодным и неправильным образом. Благодарю. – iphaaw