使用 LUA 中变量来打印列表

我的脚本使用 lfs 读取目录中的文件。 然后将该值存储在名为 file 的变量中。 问题在于该值实际上是一个列表。 以下是一个示例值。

.
..
a.txt
b.txt
c.txt
d.txt

我可以按原样打印此变量,但是我需要在对话框中集成此变量。 将此变量集成到对话框中后,它会在新的对话框中打印每行。 以下是我的代码:

require 'lfs'

function main()
    for file in lfs.dir[[C:\Users\QXJtaW5pdXM\Desktop\Test\test_3.4.5.6]] do
    print(file)
    --这行代码可以正常工作。

    Dialog("标题", "文件:\n" .. file)
    --这会在新的对话框中打印每行。
    end
end

return main

我需要在一个对话框中打印所有文件。 如果可能的话,我想避免打印 ...

以下是图片参考: https://imgur.com/tmfQlan

以下是我需要的结果: https://imgur.com/mxYBO9t

请问有谁可以指点我正确的方向? 非常感谢!

点赞
用户2858170
用户2858170

你的循环体将针对每个文件执行一次,所以如果你在循环中创建了一个对话框,你会期望什么?在你创建完文件列表后,在外部创建对话框。

require 'lfs'

function main()
    local files = ""
    for file in lfs.dir[[C:\Users\QXJtaW5pdXM\Desktop\Test\test_3.4.5.6]] do
      files = files .. file .. "\n"
    end
    Dialog("Title", "Files:\n" .. files)
end

也许还有另一个函数可以立即给你一个文件名列表。

2020-04-26 14:11:36
用户88888888
用户88888888

我必须在一个 for 循环中使用 table.insert 来添加表格 file_list 中的值,然后使用 table.remove 来删除前两个输入的 ...

最终,代码看起来像这样:

require 'lfs'

file_list = {}

function main()
    for grab_files in lfs.dir[[C:\Users\QXJtaW5pdXM\Desktop\Test\test_3.4.5.6]] do
        table.insert(file_list, grab_files)
        -- table.insert 会将 grab_files 的每个输入分配给 file_list 表中的每个引用
    end
    table.remove(file_list,1)
    -- 这将删除 '.'
    table.remove(file_list,1)
    -- 这将删除 '..'
    file_names = table.concat(file_list, "\n")
    Dialog("Title", "Files:\n" .. file_names)
end

return main
2020-04-26 17:43:20