Lua:如何使用表中的所有表

positions = {
--table 1
[1] = {pos = {fromPosition = {x=1809, y=317, z=8},toPosition = {x=1818, y=331, z=8}}, m = {"100 monster"}},
--table 2
[2] = {pos = {fromPosition = {x=1809, y=317, z=8},toPosition = {x=1818, y=331, z=8}}, m = {"100 monster"}},
-- table3
[3] = {pos = {fromPosition = {x=1809, y=317, z=8},toPosition = {x=1818, y=331, z=8}}, m = {"100 monster"}}
}

for _, tb in pairs(positions) do
    for _,x in pairs(tb.m) do --function
        for s = 1, tonumber(x:match("%d+")) do
            pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z}
            doCreateMonster(x:match("%s(.+)"), pos)
        end
    end
end
点赞
用户528083
用户528083

我对 Lua 不是很熟悉,但是你可以遍历这个表格:

for i = 0, table.getn(positions), 1 do
     tb = positions[i]
     ...
end

来源:http://lua.gts-stolberg.de/en/schleifen.phphttp://www.lua.org/pil/19.1.html

2012-12-08 12:52:15
用户1008957
用户1008957

你需要使用数值型的 for 循环遍历 positions

需要注意的是,与 Antoine Lassauzay 的答案不同,这个循环从 1 开始而不是 0,并使用 # 操作符而不是 table.getn(在 Lua 5.1 中已被弃用,在 Lua 5.2 中被移除)。

for i=1,#positions do
  tb = positions[i]
  ...
end
2012-12-08 13:38:13
用户1208078
用户1208078

使用 pairs() 内建函数。在这里没有理由使用数字 for 循环。

for index, position in pairs(positions) do
    tb = positions[index]
    -- tb 现在和变量 'position' 完全一样
end
2012-12-09 15:14:21