はい、 への呼び出しの外で (名前付きの) 関数を定義することは可能lists:foreach/2
です。しかし、なぜあなたは?これは、無名関数が非常に便利な場合です。
lists:foreach(fun(N) ->
file:make_dir(
filename:join("work", "p"++integer_to_list(N, 16)))
end, lists:seq(0, 15)).
このfilename:join/2
呼び出しは、適切なディレクトリ セパレータを使用して文字列 を作成しますwork/pN
。ここで、N
は を使用して作成された 16 進表現の整数でinteger_to_list/2
、整数を基数 (16) の文字列 (リスト) に変換します。
lists:seq/2
[A,A+1,A+2,...,B-1,B]
は、指定されたリストA
とを返すフレンドリーな小さな関数ですB
。
ここではリスト内包表記構文を使用することもできますが、副作用だけのために関数をリストに適用しているため、foreach
.
本当に別の関数を定義したい場合は(それを呼び出してfoo
、42 個の引数を取ると仮定しましょうfun foo/42
)、コード内でそれを参照できます。この式は、インラインで定義された無名関数のように、 に渡すことができる関数オブジェクトに評価されますlists:foreach/2
。