2

我已经阅读了一些示例代码,但我只是不明白如何使用类似 foreach 的循环来遍历文件集合。这是我获取文件列表的方法:

ls=:0 dir '*.*'

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

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

在手册中,每个循环的 a 看起来像这样:

smoutput each i.10

显然这没有用,它打印 1 到 10,我不知道如何修改它以使用我的目录列表。

4

2 回答 2

2

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

例子:

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

for_.变体可以说是最有用的。变量的名称file正好位于下划线和句点之间。要记住的重要一点是,for 循环将给出数组中出现的每个项目,所以如果ls是一个装箱字符串的数组,每个项目都file将显示为一个装箱字符串。

于 2013-01-21T15:15:32.577 回答
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
于 2013-01-21T23:18:40.523 回答