首先 lua是一门动态类型的脚本语言,这就意味着同一个变量在不同的时刻可以指向不同的数据类型,例如声明一个变量t 既可以指向字符串,也可以指向表,这就需要一个通用的数据结构来表示lua里的所有数据类型包括数字、字符串、表、指针、函数、Lua虚拟机等类型。用来表示不同的数据类型的通用数据结构需要满足两个条件,1.结构中需要包含一个表示数据类型的字段 2.包含一个存储实际数据的字段 ,常见的做法有两种:
1. 一般的面向对象思路,定义一个公共数据结构,存储所有数据类型的公共信息,其他具体数据在派生结构中定义 。
2. 使用c语言的union
在lua中,两种方法都有使用,接下来看一下lua的通用数据结构是如何定义的,首先需要确定数据类型type,在lua中基础数据类型对应的type在lua.h 中定义 。如下图
其中 LUA_TUSERDATA 和 LUA_TLIGHTUSERDATA 两种 对应的都