我已经阅读了一些示例代码,但我只是不明白如何使用类似foreach的循环来遍历文件集合。以下是我获取文件列表的方法:
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,我不知道如何修改它以使用我的目录列表。
答案 0 :(得分:2)
each
关键字用于单行循环。有for
loop,您可以在定义的函数(或动词)中使用。
示例:
myFunction =: 3 : 0
ls =. 1 dir '*.*'
for_file. ls do.
doSomething ;file
doSomethingElse ;file
end.
)
for_.
变体可以说是最有用的。变量file
的名称在下划线和句点之间。要记住的重要一点是,for循环将给出数组中出现的每个项目,因此如果ls
是一个盒装字符串数组,则每个file
将显示为一个盒装字符串。
答案 1 :(得分: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