1
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 是一个表格,里面有字符串

- - 目标

--合并表“输出”和“子词”

- - 输出

--重复打印“Q2:添加(单词)”(在其他内容之后)

-- 使 ROBLOX 崩溃

有任何想法吗?

4

2 回答 2

2

请参阅 Phrogz 评论:subWords 和 output 是同一张表。

请注意,在 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 如何处理这些功能(它可能没有输出控制台和/或它可能会捕获错误)。

于 2010-12-04T06:36:21.633 回答
1

闻起来像 subWords 和 Output 是同一张表。并且在遍历表时,永远不要向正在遍历的表添加值,如 Lua 参考手册中所述:

[剪辑]

如果在遍历期间将任何值分配给表中不存在的字段,则 next 的行为是未定义的。但是,您可以修改现有字段。特别是,您可以清除现有字段。

[剪辑]

pairs()在内部使用 next 。

于 2010-12-04T09:38:39.730 回答