Lua是动态类型的语言, 即是说类型附着于值而不变量[1]. Lua的八种基本类型空, 布尔, 数值, 字符串, 表, 函数和用户数据. 所有类似的值都是虚拟机的第一类值. Lua 解释器将其表示成为标签联合(tagged union). 如下面代码示例所示:
lobject.h : 56
/*
** Union of all Lua values
*/
typedef union {
GCObject *gc;
void *p;
lua_Number n;
int b;
} Value;
/*
** Tagged Values
*/
#define TValuefields Value value; int tt
Lua源码分析(2) -- 对象表示
最新推荐文章于 2021-07-11 18:29:46 发布
本文深入分析了Lua源码中对象的表示方式,重点介绍了TValue结构和Value联合体如何实现动态类型。Lua的类型附着于值,通过tt字段标识类型。Value联合体允许表示GCObject指针(用于可回收对象)和原始类型(如数值、布尔等)。同时,GCObject用于表示如字符串、用户数据、表和协程等不同类型的对象。
摘要由CSDN通过智能技术生成