我的Lua函数使用表格的效率。

我对我编写的这段Lua代码有一个问题。 假设有一个如下所示的函数,包含200个myTable表,其中名称按字母顺序排序:

function loadTable(x)
    local myTable
    if x == "aaron" then myTable = {1,2,3,4,5,6,7,8,9,0}
    elseif x == "bobby" then myTable = {1,3,3,4,5,8,7,8,9,1}
    elseif x == "cory" then myTable = {1,2,3,3,3,6,7,8,9,2}
    elseif x == "devin" then myTable = {1,2,3,4,5,2,3,4,9,0}
    ...
    else
        print("table not available")
    end
    return myTable
end

现在我想找到与x == "zac"相对应的表(它恰好在最后一行)。我使用这行代码:

local foundTable = loadTable("zac")

这不是非常有效吗?如果它必须在函数的最后找到表,那么它必须遍历所有先前的代码行。在Lua中有没有一种更有效的编码方式,可以更快地找到正确的表?

点赞
用户3465182
用户3465182

这可以通过使用……表格来大大加快速度!

只需创建一个表格,其键为人名,值为要加载的表格,像这样:

local tables = {
   john = {1,2,3,4,5,6,7,8,9,0},
   peter = {1,3,3,4,5,8,7,8,9,1},
   william = {1,2,3,3,3,6,7,8,9,2},
   victoria = {1,2,3,4,5,2,3,4,9,0}
   --...
}

然后,不用调用 loadTable("richard"),只需使用 tables["richard"]tables.richard (如果键是一个有效的标识符)即可。

2015-08-09 10:47:59