我想在Erlang中创建16个目录。对于(create_dir(“work/p”++ A,其中A是列表[0,1,... f]中的元素)(十六进制表示中的十六个数字)。十六行喜欢:MKDIR(“工作/ P0”),MKDIR(“工作/ P1”)等Erlang通过列表(或设置)循环处理文件
我已经看过列表:的foreach在使用乐趣的例子中,可以定义外的一个函数循环,并呼吁呢?
我是新来的Erlang和用于C++等
我想在Erlang中创建16个目录。对于(create_dir(“work/p”++ A,其中A是列表[0,1,... f]中的元素)(十六进制表示中的十六个数字)。十六行喜欢:MKDIR(“工作/ P0”),MKDIR(“工作/ P1”)等Erlang通过列表(或设置)循环处理文件
我已经看过列表:的foreach在使用乐趣的例子中,可以定义外的一个函数循环,并呼吁呢?
我是新来的Erlang和用于C++等
是的,这是可能的外呼定义(命名)函数来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
是在十六进制表示的整数构建的使用integer_to_list/2
,它转换的整数到给定基数(16)中的字符串(列表)。
lists:seq/2
是一个友好的小功能,返回列表[A,A+1,A+2,...,B-1,B]
给出A
和B
。
请注意,您也可以在这里使用list comprehension语法,但由于我们仅将功能应用于列表中的副作用,我选择坚持使用foreach
。
如果你真的想定义一个单独的函数 - 姑且称之为foo
,并假定它需要42个参数 - 你可以称其为fun foo/42
在你的代码。该表达式的计算结果为一个函数对象,与内联定义的匿名函数一样,函数对象可以传递给lists:foreach/2
。