#Lua#Pushing elements

此篇介绍 C API提供的向The Stack中压入元素的操作函数

lua_pushnil 压入nil类型数据
lua_pushboolean 压入boolean类型数据
lua_pushnumber 压入double类型数据
lua_pushinteger 压入整型数据
lua_pushunsigned 压入无符号整型数据
lua_pushlstring 压入字符串类型数据,同时需要传入这个字符串长度
lua_pushstring 压入字符串类型数据

void lua_pushnil (lua_State *L);
void lua_pushboolean (lua_State *L, int bool);
void lua_pushnumber (lua_State *L, lua_Number n);
void lua_pushinteger (lua_State *L, lua_Integer n);
void lua_pushunsigned (lua_State *L, lua_Unsigned n);
void lua_pushlstring (lua_State *L, const char *s, size_t len);
void lua_pushstring (lua_State *L, const char *s);

注意事项:
lua_Number类型是Lua中的number类型,默认是double类型,在某些安装环境中,会设置为float类型甚至更长的整形

每次向The Stack中压入元素时,检查其是否拥有足够的空间。

int lua_checkstack (lua_State *L, int sz);

测试并打印


1. lua_pushnil

函数原型:

void lua_pushnil(lua_State *L);

测试:

lua_pushnil(L);
dump_stack(L);

输出:

---- { dump_stack ----
nil    
---- dump_stack } ----

2. lua_pushboolean

函数原型:

void lua_pushboolean(lua_State *L, int bool)

测试:

lua_pushboolean(L, 1);
lua_pushboolean(L, 0);
lua_pushboolean(L, 3);
lua_pushboolean(L, -3);
dump_stack(L);

输出:

---- { dump_stack ----
true    false    true    true    
---- dump_stack } ----

3. lua_pushnumber

函数原型

void lua_pushnumber(lua_State *L, lua_Number n);

其中 lua_Number 即为 double

测试:

lua_pushnumber(L, 0);
lua_pushnumber(L, 1);
lua_pushnumber(L, 2.0);
lua_pushnumber(L, -0);
lua_pushnumber(L, -0.5);
lua_pushnumber(L, -1);
lua_pushnumber(L, -2.5);
lua_pushnumber(L, 9223372036854775807);

输出:

---- { dump_stack ----
0    1    2    0    -0.5    -1    -2.5    9.22337e+18    
---- dump_stack } ----

4. lua_pushinteger

函数原型

void lua_pushinteger(lua_State *L, lua_Integer n);

其中 lua_Integer 即为 long long

测试:

lua_pushinteger(L, 0);
lua_pushinteger(L, 1);
lua_pushinteger(L, 2.0);
lua_pushinteger(L, -0);
lua_pushinteger(L, -0.6);
lua_pushinteger(L, -1);
lua_pushinteger(L, -2.5);
lua_pushinteger(L, 9223372036854775807);

输出:

---- { dump_stack ----
0    1    2    0    0    -1    -2    9.22337e+18    
---- dump_stack } ----

5. lua_pushlstring

函数原型:

void lua_pushlstring(lua_State *L, const char *s, size_t len);

测试:

const char * s = "Hello world";
lua_pushlstring(L, s, strlen(s));

输出:

---- { dump_stack ----
'Hello world'    
---- dump_stack } ----

6. lua_pushstring

函数原型:

void lua_pushstring(lua_State *L, const char *s);

测试:

const char * s = "Hello world\0";
lua_pushstring(L, s);

输出:

---- { dump_stack ----
'Hello world'    
---- dump_stack } ----

你可能感兴趣的:(#Lua#Pushing elements)