2013-01-21 87 views
2

我已经阅读了几个示例代码,但我不明白如何使用foreach-like循环遍历文件集合。这里是我如何得到文件列表:列出每个循环使用的目录中的文件

ls=:0 dir '*.*' 

我可以回应这一点,它工作正常。但我需要做的是使用某种循环一次处理每个文件1。所以像:

ls=:0 dir '*.*' 
foreach (file in ls) { 
do something(file) 
do something else.. so on 
} 
手册中

每个循环应该是这样的:

smoutput each i.10 

显然,这是没有用的,它输出1到10,我不知道如何修改此与我的目录列表一起工作。

回答

2

each关键字用于单线循环。有一个for loop,您可以在定义的函数(或动词)中使用它。

实施例:

myFunction =: 3 : 0 
    ls =. 1 dir '*.*' 
    for_file. ls do. 
     doSomething ;file 
     doSomethingElse ;file 
    end. 
) 

for_.的变体可以说是最有用的。变量file的名称在下划线和句点之间。需要记住的重要一点是,for循环会将每个项目显示在数组中,因此如果ls是一个盒装字符串数组,则每个file都将显示为一个盒装字符串。

+0

它在说 “拼写错误for_file。LS做的。” – ace007

+0

@ ace007这是必须进入一个函数。您无法直接在提示中输入。我会编辑。另外请注意'1 dir'会更容易通过。 – MPelletier

+0

好吧,它有点作品,但列出前2个文件后,我得到一个“语法错误:myFunction | myFunction 0”我是否正确调用该函数,我也称它为myFunction'' – ace007

0

你可能需要这种形式的列表:

ls =: 1 dir '*.*' 

这是文件的列表不喜欢0 dir '*.*'字符的列表。

您可以在此列表中使用each,例如:

]ls =: 1 dir '*' 
┌──────────┬──────────────┬──────────┬───────────┬───────┐ 
│build_defs│build_jconsole│build_libj│build_tsdll│jconfig│ 
└──────────┴──────────────┴──────────┴───────────┴───────┘ 

;# each ls NB. number of characters for each filename 
10 14 10 11 7 
相关问题