String 在Lua中用空格表示两个变量值
我有一个字符串,我正试图用一个包含字符串、空格和另一个字符串(整数)的变量来构建。该字符串需要由索引号组成,索引号基于名为“master_table”的表中的元素数,第一次通过变量“indexes_to_process”为nil。我正在尝试使用下面的小节来设置它。但是,即使x设置正确,它仍然包含一个nil值。我确信这是我在画空白的语法。我试过对这个做几次修改,但都没用。如有任何建议,我们将不胜感激。目标是拥有一个包含以下内容的变量: “123456789101112131415”等等。我这样做是为了有一个数千到数百万个索引号的可变控制循环。这是我解决100K元素后表格处理速度慢的解决方案。也就是说,我希望能够将索引号添加到变量“indexes_to_process”中,这样循环将命中该元素。这节省了我处理表中的空元素的时间,因为在我进入100K范围后,处理所有表元素的时间太长,可能需要处理10K个元素 提前谢谢String 在Lua中用空格表示两个变量值,string,lua,string-concatenation,String,Lua,String Concatenation,我有一个字符串,我正试图用一个包含字符串、空格和另一个字符串(整数)的变量来构建。该字符串需要由索引号组成,索引号基于名为“master_table”的表中的元素数,第一次通过变量“indexes_to_process”为nil。我正在尝试使用下面的小节来设置它。但是,即使x设置正确,它仍然包含一个nil值。我确信这是我在画空白的语法。我试过对这个做几次修改,但都没用。如有任何建议,我们将不胜感激。目标是拥有一个包含以下内容的变量: “123456789101112131415”等等。我这样做是
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中所示。