2011-01-23 28 views
5

Me gustaría agregar un contador en este bucle para conocer la fila de cada elemento de la lista. ¿Tienes una solución simple?bucle foreach con contador

lists:foreach(fun(X) .... end,Y),

+1

Es un poco mejor decir su objetivo en lugar de lo que cree que le ayudará a lograr su objetivo. Hay diferentes respuestas dependiendo de lo que realmente está tratando de hacer. – Dustin

+0

Y = ["abc", "def", "ghi"], listas: foreach (fun (X) io: write ("string ~ w: ~ s, [N, X]) end, Y), – Bertaud

Respuesta

10

Use listas: foldl o escribir su propia función:

lists:foldl(fun(E,Cnt) -> ..., Cnt+1 end, 0, Y), 
+0

Sí Muy bien. De hecho, no hay diferencia conceptual entre foreach y foldl. – Bertaud

2

Si desea rodar su propia, esto parecen funcionar como se requiere:

foreach_index(F, [H|T]) -> 
    foreach_index(F, [H|T], 0). 

foreach_index(F, [H|T], N) -> 
    F(H, N), 
    foreach_index(F, T, N + 1); 

foreach_index(F, [], N) when is_function(F, 2) -> ok. 

La función F se invocará con dos parámetros: la entrada individual de la lista y su índice.

Cuestiones relacionadas