幻影表条目

似乎有两种方法可以动态添加元素到表中:

table.insert(t, index, value) -- 可选的索引

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

-- 输出
-- 1
-- 2
-- 3    familiarize
-- 4    familiarise

你有任何想法这些额外的两个条目来自哪里?

点赞
用户777586
用户777586

你仍然在那个循环里走了两次;一次是对于 i == 0,一次是对于 i == 1。我们可以添加一些打印来演示:

words = {}
for i = 0, 1 do
    print "inserting two..."
    local word = "familiarize"
    table.insert(words, word)
    -- 美式拼写改为英式拼写
    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

这应该能让事情更清楚了。

2013-10-17 21:10:01