在 Lua 中用 space 连接两个变量值
Concat two variable values with space in Lua
我有一个字符串,我试图用一个包含字符串的变量和一个 space 和另一个字符串(整数)构建。该字符串需要包含基于元素数量的索引号a table 调用了 "master_table" 第一次通过变量 "indexes_to_process" 是nil。我正在尝试使用下面的节来设置它。但是,即使 x 设置正确,它仍然包含一个 nil 值。我确信这是我正在画空白的一些语法陷阱。我已经尝试对此进行了几次更改,但没有任何效果。将不胜感激任何建议。目标是拥有一个包含以下内容的变量:
"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" 等等。我这样做是为了拥有一个包含数千到数百万个索引号的可变控制循环。 . . .这是我解决 100K 元素后 table 处理缓慢的解决方案。即,我希望能够将索引号添加到变量 "indexes_to_process" 中,以便循环将命中此元素。这节省了我处理 table 中的空元素,因为在我进入 100K 范围后处理所有 table 元素花费的时间太长,而且我可能有 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
这里有 2 个例子:
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
可以为nil,使用:
x = (x or "") .. "text"
我有一个字符串,我试图用一个包含字符串的变量和一个 space 和另一个字符串(整数)构建。该字符串需要包含基于元素数量的索引号a table 调用了 "master_table" 第一次通过变量 "indexes_to_process" 是nil。我正在尝试使用下面的节来设置它。但是,即使 x 设置正确,它仍然包含一个 nil 值。我确信这是我正在画空白的一些语法陷阱。我已经尝试对此进行了几次更改,但没有任何效果。将不胜感激任何建议。目标是拥有一个包含以下内容的变量:
"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" 等等。我这样做是为了拥有一个包含数千到数百万个索引号的可变控制循环。 . . .这是我解决 100K 元素后 table 处理缓慢的解决方案。即,我希望能够将索引号添加到变量 "indexes_to_process" 中,以便循环将命中此元素。这节省了我处理 table 中的空元素,因为在我进入 100K 范围后处理所有 table 元素花费的时间太长,而且我可能有 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
这里有 2 个例子:
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
可以为nil,使用:
x = (x or "") .. "text"