for enum for-loop elixir

for-loop - enum - for each elixir



Llenar una lista con un for-loop (1)

En Elixir, no puede cambiar el valor al que hace referencia su variable, como se explica en ¿Las variables de Elixir son realmente inmutables? . En este caso, no es un "bucle", es una lista de comprensión .

Puede asignar el resultado de una comprensión con:

new_data = for data <- old_data do data end

En tu línea:

new_data = List.insert_at(new_data, -1, data)

La variable new_data es local al alcance de la comprensión. Puede usar su valor new_data anterior, pero no podrá volver a enlazar para el alcance externo. Por eso new_data sigue siendo [] después de tu comprensión. Las reglas de alcance se explican en http://elixir-lang.readthedocs.org/en/latest/technical/scoping.html

¿Por qué no puedo completar una lista con este simple for-loop?

new_data = [] for data <- old_data do new_data = List.insert_at(new_data, -1, data) end

Después de esta operación, mi lista new_data aún está vacía, aunque el ciclo se ejecuta N veces.