#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 } ----
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一篇 语言 第0章 序言 Lua仅让你用少量的代码解决关键问题。 Lua所提供的机制是C不擅长的:高级语言,动态...
    testfor阅读 7,746评论 1 7
  • 当在Lua和C之间交换数据时主要的问题是自动回收与手动回收内存管理的不一致。因此,Lua 用一个抽象的栈在Lua与...
    luffier阅读 7,548评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,850评论 19 139
  • 圣诞节、平安夜,我们被朋友圈各种祝福各种秀刷屏, 情人节,我们被红包还有各种花、秀恩爱刷屏, 新年元旦,被各种海誓...
    一颗流心阅读 2,738评论 0 0
  • 1.层叠规则 1.找出所有相关规则。2.按显式权重对应用到该元素的所有声明进行排序,权重由大到小的顺序为: 读者的...
    星月西阅读 1,351评论 0 0

友情链接更多精彩内容