if #subWords>0 then
print("Q3")
for a,b in pairs(subWords) do
table.insert(output,b)
print("Q2: Adding "..b)
end
end
----定义
- subWords是一个包含四个字符串的表
- 输出是一个表,其中包含字符串
----目标
- 合并表“output”和“subWords”
----输出
- 反复打印“Q2:添加(字)”(在其他内容之后)
- 崩溃ROBLOX
有什么想法吗?
答案 0 :(得分:2)
参见Phrogz评论:子词和输出是同一个表。
请注意,在Lua中,表值是引用,因此:
t1 = {}
t2 = t1
t3 = t2
t4 = t3
// all four of these variables refer to the *same* table
print(t4.food) -- nil
t1.food = "donut"
print(t4.food) -- donut
您的代码发生了什么subWords
和output
引用了同一个表。在循环浏览此表中的项目时,您将添加新项目,因此循环将永远不会完成。
我知道你说情况并非如此,但这是唯一可以产生这些症状的东西。在循环之前尝试output = {}
,你会发现问题消失了。或者您可以assert(output ~= subWords)
或print(output, subWords)
看到它们是相同的,但我不知道Roblox如何处理这些功能(它可能没有输出控制台和/或它可能会捕获错误)
答案 1 :(得分:1)
闻起来像subWords和Output是同一个表。 在遍历表时,永远不要向正在遍历的表添加值,如Lua参考手册中所述:
[剪断]
如果,未定义next的行为, 在遍历期间,您指定任何 值的一个不存在的字段 表。但是,您可以修改现有的 领域。特别是,你可以清楚 现有领域。
[剪断]
pairs()
在内部使用。