这里主要记录Lua的对象系统。
Lua 有八种数据类型:nil、boolean、number、string、userdata、function、thread 和table。代码实现时,定义了如下结构体
typedef 联合值{
GCObject *GC;
整数b; //对于布尔值
lua_C函数f;
lua_Integer i;
lua_Number n;
}价值;
typedef 结构lua_TValue{
价值价值__;
tt;
}T值; TValue的定义分为两部分,其中tt存储数据类型,value__存储各种数据。 value__ 可以分为两部分。可以gc的数据类型用union放在一起,剩下的就是不能gc的数据。
这是C语言中实现面向对象编程的一种方式。从外部来看,TValue 是基类。实际处理数据时,使用Value的哪一部分数据是根据tt中存储的数据类型来确定的。
对于可GC部分,则稍微复杂一些。
我们看一下gc部分
unionGCUnion{
GCObject GC;
结构体TString t;
结构Udata u;
工会关闭cl;
结构表h;
结构原型p;
struct lua_State th;
};
#definecast_u(o)cast(unionGCUnion*,(o))
.
//根据TValue获取表数据。
#define gco2t(o)cast_u(o)-h //适当简化,更容易理解
#define hvalue(o) gco2t(o-value__).gc)//为了方便理解,简化了转换过程。其实转换过程就是TValue——取出子结构——GCObject——向上强制传递——GCUnion——具体数据类型。当然,使用了一个小技巧,那就是GCObject必须始终位于数据的头部,否则向上的力传递会失败。
typedef 结构GCObject{
GCObject *下一个;
lu_byte tt;
深入探索Lua编程:学习之旅指南的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、深入探索Lua编程:学习之旅指南的信息别忘了在本站进行查找哦。
【深入探索Lua编程:学习之旅指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
最近也想学学 Lua, 好像很方便入门啊。
有20位网友表示赞同!
Lua 代码简洁明了,学习起来应该不会太难吧?
有6位网友表示赞同!
Lua 现在在什么地方应用比较多呢?可以给我推荐一些资料吗?
有16位网友表示赞同!
我也想踏上 Lua 的学习之路,感觉很期待!
有10位网友表示赞同!
有没有一些好的 Lua 学习资源分享一下?看论坛说有很多好用的库。
有14位网友表示赞同!
Lua 比其他语言容易写吗?我之前学过 Python...
有18位网友表示赞同!
听说 Lua 应用于游戏开发很有优势,是真的吗?
有10位网友表示赞同!
Lua 的学习难度怎么样?跟 Java 有没有关系?
有18位网友表示赞同!
我想了解一下 Lua 在实际项目中是如何被使用的?
有7位网友表示赞同!
感觉一个好的 Lua 教程可以让我更快入门!
有14位网友表示赞同!
Lua 学习起来会不会太枯燥?有没有一些趣味练习能玩?
有9位网友表示赞同!
学习 Lua 能让我在工作上更有竞争力吗?
有9位网友表示赞同!
Lua 的社区氛围怎么样?大家交流方便吗?
有14位网友表示赞同!
我觉得 Lua 很适合入门编程,准备开始学习了!
有16位网友表示赞同!
我希望能找到一些实践项目,把 Lua 的知识运用一下。
有9位网友表示赞同!
Lua 应用场景很广泛吧?从游戏到 Web 都有用?
有8位网友表示赞同!
有没有一些 Lua 学习经验分享的,可以让我省点时间?
有9位网友表示赞同!
学习完 Lua 可以做什么样的项目呢?感兴趣了!
有6位网友表示赞同!
想看看Lua 的语法与其他语言有什么区别...
有8位网友表示赞同!