Lua 源码分析之TValue

Lua数据结构设计确定了这个整体的设计理念,Lua所有的数据,一共有9种,都是通过TValue这个结构来存储。Lua的9种基础的数据类型有(lua.h:73):

/*
** basic types
*/
#define LUA_TNONE        (-1)

#define LUA_TNIL        0
#define LUA_TBOOLEAN        1
#define LUA_TLIGHTUSERDATA    2
#define LUA_TNUMBER        3
#define LUA_TSTRING        4
#define LUA_TTABLE        5
#define LUA_TFUNCTION        6
#define LUA_TUSERDATA        7
#define LUA_TTHREAD        8

其中, LUA_TNONE表示不是任何的一种类型

TValue这个结构体,对应表达这9个类型是根据TValuefields来区分:

(lobject.h:107)

typedef struct lua_TValue TValue;

(lobject.h:400)

struct lua_TValue {
  TValuefields;
};

具体TValuefields的宏定义如下:
(lobject.h:105)

#define TValuefields    Value value_; int tt_

TValuefields有两个字段:
Value:存储具体数据的值
tt_:表示这个值的类型,即所有的基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值