首页 > 解决方案 > 在Lua中用空格连接两个变量值

问题描述

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

“1 2 3 4 5 6 7 8 9 10 11 12 13 14 15”等等。我这样做是为了拥有一个包含数千到数百万个索引号的可变控制循环。. . .这是我在 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

标签: stringluastring-concatenation

解决方案


这里有两个例子:

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"

推荐阅读