Lua元表应用举例:配置表格转为Lua配置表

  • 把配置表格.xlsx数据转为Lua配置表,其实就是把表格数据用Lua写一遍,这里的实现重点就是setmetatable设置元表。
  • 以下以表格student_info.xlsx举例,展示对应Lua配置表内容:
    • 表格内容:

student_info.xlsx内容

    • 对应Lua配置表起名为student_info.lua,内容如下。姓名name考虑到以后有重复的可能,所以单独建了一个表__CS存储。
--[[ 列名称 备注
id  编号
name  姓名
age  年龄
]]

-- 列名称
local __key_map = 
{ 
    id = 1,
    name = 2,
    age = 3,   
}

-- string 常量
local __CS = 
{
    "张三",
    "李四",
    "王五",
} 

-- meta table
local mt = 
{ 
    __index = function(t, k) 
        if __key_map[k] == nil then
            return nil
        end
        return t[__key_map[k]]
    end
}

local cfg = {} 
cfg[1000]= setmetatable({ 1000, __CS[1], 15,}, mt) 
cfg[1001]= setmetatable({ 1001, __CS[2], 16,}, mt) 
cfg[1002]= setmetatable({ 1002, __CS[3], 15,}, mt) 

return  cfg

  测试打印王五的信息(这里省略了require部分):

print(cfg[1002].id, cfg[1002].name, cfg[1002].age)

  运行结果如下:

原文地址:https://www.cnblogs.com/caiger-blog/p/14352136.html