幻影表条目

时间:2013-10-17 20:58:29

标签: lua

似乎有两种方法可以动态地向表格添加元素

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

知道这些额外的两个条目来自何处?

1 个答案:

答案 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

这应该让事情更清楚。