似乎有两种方法可以动态地向表格添加元素
table.insert(t, index, value) -- optional index
和
t[#t+1] = value
根据文档,如果索引处于停用状态,table.insert(t, value)
的行为应与t[#t+1] = value
完全相同。
出于某种原因,即使我只在表格中存储了两个值,但当我使用ipairs
进行迭代时,我会看到四个条目:
words = {}
for i = 0, 1 do
local word = io.read() -- word is familiarize
table.insert(words , word)
-- american to english spelling
word = word:gsub("ze","se")
table.insert(words , word)
end
for i,v in ipairs(words) do
print(i,v)
end
-- prints
-- 1
-- 2
-- 3 familiarize
-- 4 familiarise
知道这些额外的两个条目来自何处?
答案 0 :(得分:3)
(我假设你想insert
进入words
,而不是t
。)
你还在那个循环中走两圈;一次用于i == 0
,一次用于i == 1
。我们可以添加一些印刷品来证明:
words = {}
for i = 0, 1 do
print "inserting two..."
local word = "familiarize"
table.insert(words, word)
-- american to english spelling
word = word:gsub("ze","se")
table.insert(words, word)
end
for i,v in ipairs(words) do
print(i,v)
end
这给出了以下输出:
inserting two...
inserting two...
1 familiarize
2 familiarise
3 familiarize
4 familiarise
这应该让事情更清楚。