Lua5.3源码阅读记录(2)-- 数据类型

本文探讨了Lua5.3中实现动态类型的关键数据结构Tvalue,详细介绍了如何通过Tvalue表示各种数据类型,包括需要垃圾回收(GC)和不需要GC的类型。文章解析了Tvalue的结构,以及如何在Tvalue与具体类型之间进行转换,强调了数据结构在实现动态语言特性中的重要性。
摘要由CSDN通过智能技术生成

 

       首先 lua是一门动态类型的脚本语言,这就意味着同一个变量在不同的时刻可以指向不同的数据类型,例如声明一个变量t 既可以指向字符串,也可以指向表,这就需要一个通用的数据结构来表示lua里的所有数据类型包括数字、字符串、表、指针、函数、Lua虚拟机等类型。用来表示不同的数据类型的通用数据结构需要满足两个条件,1.结构中需要包含一个表示数据类型的字段 2.包含一个存储实际数据的字段 ,常见的做法有两种:

1. 一般的面向对象思路,定义一个公共数据结构,存储所有数据类型的公共信息,其他具体数据在派生结构中定义 。

2. 使用c语言的union

在lua中,两种方法都有使用,接下来看一下lua的通用数据结构是如何定义的,首先需要确定数据类型type,在lua中基础数据类型对应的type在lua.h 中定义 。如下图

 

 

其中 LUA_TUSERDATA 和 LUA_TLIGHTUSERDATA 两种 对应的都

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值