How to assign a variable to a value in the case condition. Is the following way correct? If a better solution exists, let me know. Your help will be highly appreciable.
case stage_id do
"" ->
stage_id = JobStage.get_job_stage(job_opening_id, 1).id
end
Note variables defined inside case, cond, fn, if and similar do not leak. If you want to conditionally override an existing variable “stage_id”, you will have to explicitly return the variable.
I’m currently running 1.8.2-otp-21 and see this behaviour:
iex(1)> defmodule M do
...(1)> def f do
...(1)> x = :outer
...(1)> case "" do
...(1)> "" ->
...(1)> x = :inner
...(1)> end
...(1)> IO.puts x
...(1)> end
...(1)> end
warning: variable "x" is unused (if the variable is not meant to be used, prefix it with an underscore)
iex:6
iex(2)> M.f
outer
:ok
As you can see, I see a warning about the “inner” x not beeing used, but I do not see a warning about the imperativ assignment, instead “outer” x stays unchanged.