在 LuaFileSystem 中,lfs.dir(<path>)
将目录的内容作为字符串进行迭代。如果我想打印目录内容的属性,我可能会这样做(使用 inspect.lua 打印人类可读的表格表示):
for name in lfs.dir(<path>) do
local path = <path> .. '/' .. name
inspect(lfs.attributes(path))
end
但是,迭代器的前两个字符串似乎总是'.'
和'..'
(当前目录和前一个目录的 shell 符号)。这会导致我的代码中出现错误,因为<path> .. '/' .. '.'
从来不是文件或目录。
我已经开始通过在循环之前将状态推进两次来跳过这些。
local it, state = lfs.dir(path)
state:next()
state:next()
for file_name, _ in it, state, nil do
-- stuff
end
优点是我不必显式检查字符串是否为'.'
或'..'
每次迭代。一个缺点是可读性下降。是否会出现前两个字符串不同的情况?