pairs (t)If t has a metamethod __pairs, calls it with t as argument and returns the first three results from the call. Otherwise, returns three values: the next function, the table t, and nil, so that the construction for k,v in pairs(t) do body end will iterate over all key–value pairs of table t. See function next for the caveats of modifying the table during its traversal.
ipairs (t)If t has a metamethod __ipairs, calls it with t as argument and returns the first three results from the call. Otherwise, returns three values: an iterator function, the table t, and 0, so that the construction for i,v in ipairs(t) do body end will iterate over the pairs (1,t[1]), (2,t[2]), ..., up to the first integer key absent from the table.
for k,v in ipairs(tb) do print(k, v) end 输出结果就是: 1 oh 2 my 3 god 因为tb不存在tb[4],所以遍历到此为止了。
for k,v in pairs(tb) do print(k, v) end 输出结果: 1 oh 2 my 3 god 6 world 5 hello 我们都能猜到,将输出所有的内容。然而你发现输出的顺序跟你tb中的顺序不同。 如果我们要按顺序输出怎么办?办法之一是: for i = 1, #tb do if tb[i] then print(tb[i]) else end 当然,仅仅是个数组的话,ipairs也没问题。