Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Csv 连接所有值并将其附加到同一变量_Csv_Lua_Append_Concatenation - Fatal编程技术网

Csv 连接所有值并将其附加到同一变量

Csv 连接所有值并将其附加到同一变量,csv,lua,append,concatenation,Csv,Lua,Append,Concatenation,我试图连接所有值并将它们附加到同一个变量,然后写入字符串的内容。我不断收到错误:“尝试连接全局“arglist”(一个nil值) 我不断收到错误:“尝试连接全局“arglist”(一个nil值) 因为您正试图在代码的第31行连接arglist(一个nil值): arglist = arglist .. "," .. buflist arglist从未初始化,因此当您尝试在=的右侧进行连接时,会出现该错误 关于此循环的旁注: for deviceindex = 1,#eo_device d

我试图连接所有值并将它们附加到同一个变量,然后写入字符串的内容。我不断收到错误:“尝试连接全局“arglist”(一个nil值)

我不断收到错误:“尝试连接全局“arglist”(一个nil值)

因为您正试图在代码的第31行连接
arglist
(一个nil值):

arglist = arglist .. "," .. buflist  
arglist
从未初始化,因此当您尝试在
=
的右侧进行连接时,会出现该错误


关于此循环的旁注:

for deviceindex = 1,#eo_device do

    description = scl.nodes[eo_device[deviceindex].node][eo_device[deviceindex].t_object .. "_Description"].value
Lua有一个“通用”for循环,允许您迭代
eo_设备
的所有元素,为您提供索引和值,因此您不必在循环中建立索引。这将稍微清理您的代码:

for deviceindex, device in ipairs(eo_device) do

    description = scl.nodes[device.node][device.t_object .. "_Description"].value

关于此代码的旁注:

buflist = device_name .. "," .. description .. "," .. temperature .. "," .. humidity 
像这样构建字符串效率非常低。在循环中执行此操作将导致数千个字符串连接,并生成大量垃圾。更好的方法是将所有字符串部分添加到一个表中,然后通过
table.concat
将它们连接到一个逗号分隔的字符串中

例如,要创建包含
eo\U设备
表中所有字符串的逗号分隔字符串:

local buffer = {}

for i,device in ipairs(eo_device) do
    table.insert(buffer, device.node)
    table.insert(buffer, device.t_object)
    table.insert(buffer, device.h_object)
end

devices = table.concat(buffer, ',')

还有一个问题,如果我在循环后打印(bufliststring),我最终只输出设备15,这是为什么?我更新了我文章的第3部分,包含了一个完整的(缺少你的
eo_设备
表),工作示例.hmmm,然后它打印这个:设备15-温度,房间15,74.624,39.2现在,它打印我,AV1,AV2,我,AV3,AV4,ME,AV5,AV6,ME,AV7,AV8,ME,AV9,AV10,ME,AV11,AV12,ME,AV13,AV14,ME,AV15,AV16,ME,AV17,AV18,ME,AV19,AV20,ME,AV21,AV22,ME,AV23,AV24,ME,AV25,AV26,ME,AV27,AV28,ME,AV29,AV30所以,我更改了表格。插入(缓冲区,设备。节点)到表格。插入(缓冲区,设备。设备名称)我认为会有帮助,但只是打印空白
local buffer = {}

for i,device in ipairs(eo_device) do
    table.insert(buffer, device.node)
    table.insert(buffer, device.t_object)
    table.insert(buffer, device.h_object)
end

devices = table.concat(buffer, ',')