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_:表示这个值的类型,即所有的基础