• 把配置表格.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)

  运行结果如下:

Lua元表应用举例:配置表格转为Lua配置表的更多相关文章

  1. [转]LUA元表

    lua元表和元方法 <lua程序设计> 13章 读书笔记 lua中每个值都有一个元表,talble和userdata可以有各自独立的元表,而其它类型的值则共享其类型所属的单一元表.lua在 ...

  2. 学习Lua setmetatable Lua 元表

    Lua 元表(Metatable) 在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作. 个人理解,这个相当于其他语言的继承,是把这个类的方法 ...

  3. lua元表学习

    a = {, } b= {, } vector2 = {} function vector2.Add(v1, v2) if(v1 == nil or v2 == nil)then return nil ...

  4. Lua 学习之基础篇八<Lua 元表(Metatabble)&&继承>

    讲到元表,先看一段table的合并动作. t1 = {1,2} t2 = {3,4} t3 = t1 + t2 attempt to perform arithmetic on a table val ...

  5. Step By Step(Lua元表与元方法)

    Step By Step(Lua元表与元方法) Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加.假设a和b都是table,通过元表可以定义如何计算表 ...

  6. 一文读懂Lua元表

    元表 Lua语言中的每种类型的值都有一套可预见的操作集合.例如,我们可以将数字相加,可以连接字符串,还可以在表中插入键值对等,但是我们无法将两个表相加,无法对函数作比较,也无法调用一个字符串,除非使用 ...

  7. ubuntu配置lua环境,并进行c与lua的相互调用

    1.安装lua环境 先查看一下apt可获取的lua版本 我们选择lua5.1版本进行安装 sudo apt install lua5.1 安装完之后测试一下是否安装成功,如果可以正常使用,则lua环境 ...

  8. KEngine策划指南:配置表格的编辑与编译

    策划与程序的桥梁 执行策划在游戏开发的过程中的主要工作是什么?当然就是和Excel打交道了.大量的Excel数据表,最终会被演变成游戏的配置数据.日常游戏开发中,策划编辑配置表一般有两种方式: 编译式 ...

  9. lua 学习 (一 )Mac搭建lua环境和ide

    今天开始学习lua  首先是搭建环境 和 我的hello world 首先 交代一下我用的是 Mac 系统 所以在Mac上安装lua 环境很方便的 lua  Mointain Lion - Lua 5 ...

  10. Lua环境搭建之使用EditPlus搭建Lua开发环境

    luatools正则表达式extension工具encoding 一.语法高亮 打开 EditPlus,Tools 工具-->Preferences首选项==>setting & ...

随机推荐

  1. 扩linux 主分区 xfs 格式的

    在centos8 上 扩主分区 # 扩系统盘,第一个分区 growpart /dev/vda 1 #后面加挂接点 一般是 / xfs_growfs  / # 查看 df -h

  2. VMware Fusion Pro 13.0.0 最新序列号【转】

    Fusion简介 VMware Fusion是最好的Windows-to-Mac解决方案,是任何平台上最强大的应用开发和测试工具. Fusion 13支持macOS 13.0,为开发者.IT管理员和普 ...

  3. $\bf{X} \bf{X}^T$和$ \bf{X}^T \bf{X}$的非零特征值和特征向量之间的关系

    设\(\lambda_i\)为\(\bf{X} \bf{X}^T\)的特征值,对应的特征向量为\(\mathbf{\alpha}_i\),则 \[\bf{X} \bf{X}^T \mathbf{\al ...

  4. 时间函数strtotime的强大

    转载:php的strtotime举例-lsstarboy-ChinaUnix博客 1.上周日午夜 strtotime("last sunday"); 2.本周日午夜    strt ...

  5. Grafana + Prometheus + Mysqld_exporter 监控 Mysql

    最近研究了对于Mysql的监控,感觉Prometheus还是挺强大的,有各种适配的度量导出工具,Mysqld_exporter也是旗下的一款工具,可以在Prometheus官网下载. 因为本机电脑用的 ...

  6. nginx配置透明代理

    来自:https://blog.csdn.net/weixin_34072458/article/details/91677177 user nginx; worker_processes auto; ...

  7. WPF使用MaterialDesign开源控件库

    在WPF控件效果这一块,很显然比winfrom要好很多,但想要做出真正好看的控件,我个人觉得还是需要用一些已有的东西比较好,比如MaterialDesign,控件种类多,自带很多图标,上手比较容易,还 ...

  8. 【剑指Offer】【树】树的子结构

    题目:输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) /* struct TreeNode { int val; struct TreeNode *left ...

  9. ant Vue 表格列多数据溢出省略显示

    1.实现下图缩式 二次更新:通过customRender设置添加悬浮窗,不需要再设置样式,注意动态数据使用的时候是一个大括号 { title:'业务分类', align:"center&qu ...

  10. Python 获取IP地址

    import socket def get_host_ip(): """ 查询本机ip地址 :return: """ try: s=sock ...