2010-12-04 72 views
1
if #subWords>0 then 
print("Q3") 
for a,b in pairs(subWords) do 
table.insert(output,b) 
print("Q2: Adding "..b) 
end 
end 

----定义Infinite“for i,v in pairs(table)do”Loop?

--subWords是用四根弦的表在它

--output是一张桌子,用绳子在它

--- - 目标

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

----输出

--Repeatedly打印 “Q2:添加(字)”(后其他的东西)

--Crashes ROBLOX

任何想法?

+0

`output`和`subWords`绝对是不同的表,对吧? – Phrogz 2010-12-04 04:51:23

+0

是的。我还修复了崩溃问题,但它仍然是一个无限循环:(。 – forbes 2010-12-04 05:01:33

回答

2

请参阅Phrogz评论:subWords和输出是相同的表。

注意,在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 

什么是你的代码发生的事情是subWordsoutput引用的是同一个表。当你循环浏览这张表中的项目时,你会在中添加新项目,所以循环永远不会完成。

我知道你说的不是这样,但那是唯一可能产生这些症状的东西。在循环之前尝试output = {},您会看到问题消失。或者你可以assert(output ~= subWords)print(output, subWords)看到它们是相同的,但我不知道Roblox如何处理这些功能(它可能没有输出控制台和/或它可能会捕获错误)。

1

气味像子字和输出是相同的表。 以及遍历表时,绝不添加值表被遍历,因为Lua的参考手册中指出:

[剪断]

如果 遍历在明年的行为是不确定的,你分配任何 值到 表中不存在的字段。但是,您可以修改现有的 字段。特别是,您可以清除 现有的字段。

[剪断]

而且pairs()使用下一个内部。