Lua: 使用缓冲操作来实现正确的作用域控制

我正在尝试创建一个用输入构建的缓冲区。然后,该缓冲区将发送捕获的字符串到文件中的另一个函数,该函数将操纵这些字符串并在其他函数中将其稍后使用。第一个捕获的数据将按预期解析并且没有问题。当接收到新数据时,我无法清除缓冲区以进行新的字符串捕获,而是将新的字符串添加到原始字符串上,使我无法正确操纵它。以下是我尝试执行的示例:

local buffer = ""

function action(input)
    buffer = buffer..input
    parse_data(buffer)
end

function parse_data(data)
     obj = ""
     obj_var = buffer:match("(%d).*")
     if obj_var == 1 then
         obj = do_some_function()
     else
         obj = do_some_other_function()
     end
     buffer = ""
end

function do_some_function()
     some action
end

function do_some_other_function()
     some chunk
end

我不知道在每次发送之前清除文件的 buffer 变量的命令或函数放在哪里。我知道这是非常简单的代码。但是我希望我已经传达了我尝试使用缓冲区变量完成的任务。这是一个插件文件,将在其主要函数中接收输入以构建每个缓冲区。然后,根据输入,它将报告到那个特定的函数。我尝试在每个函数的结尾处放置 buffer = "",但没有用。我还尝试将 function string(buffer) 中的变量调用更改为另一个变量,但仍未清除缓冲区。我想我更加混淆了缓冲区的词法作用域,以及最好的清除它的方式。

感谢所有的帮助。

点赞