Lua表的功能效率

时间:2015-08-09 09:56:41

标签: performance lua lua-table

我对将这段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中更有效地编码,并更快地找到正确的表? ?

1 个答案:

答案 0 :(得分:2)

使用...桌子可以快得多!

只需创建一个表,其键是人的名称,值是您要加载的表,如下所示:

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}
   --...
}

然后,如果密钥有效identifier

,则只需使用loadTable("richard")tables["richard"],而不是致电tables.richard