Переменные Elixir ограничены «блоком», в котором они находятся. Посмотрим, как это выглядит с вашим кодом.
n = 10
outer_list = []
for i <- 0..n - 1, do: inner_list = outer_list ++ [i]
IO.inspect outer_list
Таким образом, значение inner_list
всегда будет [] ++ [i]
, потому чтоouter_list
не изменяется.Когда вы назвали inner_list
и outer_list
просто list
, вы скрываете переменную.Это означает, что оно имеет то же имя, но другое значение в зависимости от области применения.Вы также получаете предупреждение о том, что inner_list
фактически нигде не используется.
Что вы, вероятно, хотите сделать, это
n = 10
list = for i <- 0..n - 1, do: i
IO.inspect list
Хотя, возможно, вам лучше обслужить, используя Enum.to_list/1
.
n = 10
list = Enum.to_list(0..n-1)
IO.inspect list