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
String 在Lua中用空格表示两个变量值_String_Lua_String Concatenation - Fatal编程技术网

String 在Lua中用空格表示两个变量值

String 在Lua中用空格表示两个变量值,string,lua,string-concatenation,String,Lua,String Concatenation,我有一个字符串,我正试图用一个包含字符串、空格和另一个字符串(整数)的变量来构建。该字符串需要由索引号组成,索引号基于名为“master_table”的表中的元素数,第一次通过变量“indexes_to_process”为nil。我正在尝试使用下面的小节来设置它。但是,即使x设置正确,它仍然包含一个nil值。我确信这是我在画空白的语法。我试过对这个做几次修改,但都没用。如有任何建议,我们将不胜感激。目标是拥有一个包含以下内容的变量: “123456789101112131415”等等。我这样做是

我有一个字符串,我正试图用一个包含字符串、空格和另一个字符串(整数)的变量来构建。该字符串需要由索引号组成,索引号基于名为“master_table”的表中的元素数,第一次通过变量“indexes_to_process”为nil。我正在尝试使用下面的小节来设置它。但是,即使x设置正确,它仍然包含一个nil值。我确信这是我在画空白的语法。我试过对这个做几次修改,但都没用。如有任何建议,我们将不胜感激。目标是拥有一个包含以下内容的变量:

“123456789101112131415”等等。我这样做是为了有一个数千到数百万个索引号的可变控制循环。这是我解决100K元素后表格处理速度慢的解决方案。也就是说,我希望能够将索引号添加到变量“indexes_to_process”中,这样循环将命中该元素。这节省了我处理表中的空元素的时间,因为在我进入100K范围后,处理所有表元素的时间太长,可能需要处理10K个元素

提前谢谢

if indexes_to_process == nil then
                            for x = 1,table.maxn(master_table) do
                                print ("x:"..x)                         --uncomment for debug
                                indexes_to_process = (indexes_to_process," ",x)
                                print ("indexes to process",indexes_to_process)         --uncomment for debug
                            end
end
以下是两个示例:

local master_table = {1,2,3,4,5,6}
local indexes_to_process

-- first
indexes_to_process = table.concat(master_table," ")
print(indexes_to_process)

-- second
indexes_to_process = nil
local temp = {}
for k,v in ipairs(master_table) do
   temp[#temp+1] = v .." "
end
indexes_to_process = table.concat(temp)
print(indexes_to_process)
在任何情况下,都不要将字符串粘在大循环中,内存消耗和性能会下降,例如:

indexes_to_process = indexes_to_process.. " "..x   -- bad idea
PS:如果您认为值
x
可以为零,请使用:

x = (x or "") .. "text"

你在这条线上没有发现错误吗<代码>索引到进程=(索引到进程,“,x)那行应该会抛出错误,我相信你想使用
而不是
,如果我正确理解你的意图。我不会马上得到错误;实际上,我不想使用“.”因为这不适用于nil值和第一次运行,所以“indexes_to_process”变量将为nil。在其他迭代中也可能为零。我知道我以前做过这个,但是我看了又看,从来没有做对。这是上面循环的输出。如您所见,它是有效的,但我的变量最终为零。示例输出:处理nil x的索引:3333处理nil x的索引:3334处理nil x的索引:3335处理nil x的索引:3336您使用的是什么版本的lua或lua环境<代码>索引\u到\u进程=(索引\u到\u进程,“,x)这不应该起作用,因为您没有根据该行的写入方式为
索引\u到\u进程分配任何值,它应该给出一个错误。如果您必须处理
索引到\u进程
nil
的情况,您可以执行
索引到\u进程=(索引到\u进程或“someDefaultString”)。。" " .. x
谢谢。我想我又回到绘图板上了。我需要一种更快的方法来处理这个问题——当我可能有数百万个表元素时,循环遍历每个表元素是不起作用的,超过一半的表元素将为零。使用
temp[#temp+1]=(v或“)…”
,如我在p.s中所示。