j - 使用 for 每个循环列出目录中的文件

标签 j

我已经阅读了一些示例代码,但我只是不明白如何使用类似 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,我不知道如何修改它以与我的目录列表一起使用。

最佳答案

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

示例:

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

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

关于j - 使用 for 每个循环列出目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432661/

相关文章:

j - 用 J 动词 `I.` 替换数组中的项目

j - `0".>,.2}.` 部分在 J 脚本中的作用是什么?

moving-average - J 中的指数移动平均线

j - 改变操作数的顺序会得到不同的结果吗?

j - 任意精度数被截断

arrays - J 动词的数组参数 "compatible shape"是什么构成的?

j - 如何在J中运行解剖?

while-loop - J:为什么 `f^:proposition^:_ y` 代表 while 循环?

dice - K个N面骰子的不同掷数

arrays - 了解 J 数组