2011-01-23 9 views
5

リストの各要素の行を知るために、このループにカウンタを追加したいと思います。簡単な解決策はありますか?foreachループカウンタ

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

+1

あなたの目標を達成するのに役立つと思うよりも、目標を述べる方が少し良いです。あなたが実際にしようとしていることに応じて異なる答えがあります。 – Dustin

+0

Y = ["abc"、 "def"、 "ghi"]リスト:foreach(fun(X)io:write( "string〜w:〜s、[N、X])end、Y)、 – Bertaud

答えて

10

使用リスト:foldlのか、独自の関数を記述します。

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

はい!実際にforeachとfoldlの間に概念的に違いはありません。 – Bertaud

2

あなたがあなた自身をロールする場合、これは必要に応じて動作するように表示されます。

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. 

機能Fは、リストからの個々のエントリとそのインデックスの2つのパラメータで呼び出されます。

関連する問題