美文网首页
基础: Lua数据对象模型

基础: Lua数据对象模型

作者: 码上述Andy | 来源:发表于2022-03-02 19:19 被阅读0次

Lua数据对象模型

首先Lua语言分为8种基本类型:nil、number、bool、string、table、thread、function、userdate。对应的Lua C 通用类型结构如下:


Lua数据对象组织_zw.png

统一通过TValue联合体表示数据结构,看源码过程中很多使用联合体的地方,看到Lua无不在细节上考虑内存和性能的问题。数据分为需要GC和不需要GC的两部分:

不需要GC数据类型:
void *p;         /* light userdata */
lua_CFunction f; /* light C functions */
lua_Integer i;   /* integer numbers */
lua_Number n;    /* float numbers */
需要GC数据类型:
struct TString ts;
struct Udata u;
union Closure cl;
struct Table h;
struct Proto p;
struct lua_State th;  /* thread */
struct UpVal upv;

有C++面向对象的经验的同学,看到这里是不是有面向对象的影子,Lua C内部很多通过struct嵌套、union、宏定义组织数据来实现面向对象。这里顺便提下lua脚本也可以实现面向对象,实践过程中你会发现通过lua表、元表来实现面向对象,后续会在深入篇中介绍探索表、元表内部实现。

相关文章

网友评论

      本文标题:基础: Lua数据对象模型

      本文链接:https://www.haomeiwen.com/subject/bvderrtx.html