lua在C/C++中使用table生成对应键及值
int nTop = lua_gettop(L); // 栈内初始数,假设当前为0
lua_newtable(L); // push table
lua_pushstring(L,"Line"); // push key "Line"
lua_pushcfunction(L, Line); // push value (function)Line; // int Line(lua_State* pLua)
// 当前栈值对应类型: table(-3),string(-2),function(-1)
lua_settable(L,-); // table["Line"] = Line, pop key(-2) & value(-1)
// 当前栈值对应类型: table(-1)
lua_pushstring(L, "Circle"); // push key "Circle"
lua_pushcfunction(L, Circle); // push value (function)Circle; // int Circle(lua_State* pLua)
lua_settable(L, -); // table["Circle"] = Circle, pop key & value, pop key(-2) & value(-1)
lua_setglobal(L,"Draw"); // 设置table(stack top)为全局变量,表名为Draw, 同时 pop stacktop
// 当前栈为空
lua_settop(L,nTop); // 设置栈顶为初始数
lua_dostring(L,"Draw.Line(100,50,34,34)"); //lua调用C/C++中的Line函数. 全局变量Draw(table),key("Line")对应的函数(int Line(lua_State* pLua)),100,50,34,34,依次push入栈
// 查看lua栈内容
void stackDump(lua_State* L)
{
int top = lua_gettop(L);
for (int i = ; i <= top; ++i)
{
int t = lua_type(L, i);
switch (t)
{
case LUA_TSTRING:
printf("'%s'", lua_tostring(L, i));break;
case LUA_TBOOLEAN:
printf(lua_toboolean(L, i) ? "true" : "false");break;
case LUA_TNUMBER:
printf("'%g'", lua_tonumber(L, i));break;
default:
printf("'%s'", lua_typename(L, t));break;
}
printf(" ");
}
printf("\n"); }
lua在C/C++中使用table生成对应键及值的更多相关文章
- Entity Framework Core 使用HiLo生成主键
#cnblogs_post_body.cnblogs-markdown p img { max-width: 95%; } HiLo是在NHiernate中生成主键的一种方式,不过现在我们可以在Ent ...
- JPA 不生成外键
在用jpa这种orm框架时,有时我们实体对象存在关联关系,但实际的业务场景可能不需要用jpa来控制数据库创建数据表之间的关联约束,这时我们就需要消除掉数据库表与表之间的外键关联.但jpa在处理建立外键 ...
- 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍
下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...
- Lua中使用table实现的其它5种数据结构
Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...
- 递归打印lua中的table
在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理. 废话不多讲,直接粘代码: print = release_print -- 递归打印table local ...
- lua中遍历table的几种方式比较
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...
- Lua中的table函数库
table.concat(table, sep, start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组 ...
- ABAP中的Table Control编程
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重 ...
- (DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device
Linux kernel 是怎么将 devicetree中的内容生成plateform_device 1,实现场景(以Versatile Express V2M为例说明其过程)以arch/arm/ma ...
随机推荐
- centos7默认安装没有连接网络
1.显示所有连接 #nmcli con show 2.连接网络 #nmcli con up ens33 这个ens33是通过第一步查到的 /etc/sysconfig/network-scripts目 ...
- vue中is的作用和用法
回顾vue官方文档的过程中发现了is这个特性,虽然以我的写代码风格实在用不上,不过还是记录一下这个知识点 is的作用 <ul> <li></li> <li&g ...
- Leetcode859.Buddy Strings亲密字符串
给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回 false . 示例 1: 输入: A = "ab& ...
- 安装babel-preset-stage-0为了不打包所有的组件
今天 看到一段话 是否是我们可以通过这个自定义多种组件,但是只选择我们需要的组件进行打包
- 类似淘宝五星点评 ,Jquery实现代码
<!--默认五星,根据鼠标点击判断--> <!DOCTYPE html><html lang="en"><head> <met ...
- 微信小程序分析见解
前两天朋友圈都快被小程序给刷爆了: 对于小程序这方面, 由于没有公测的资格.所以翻阅了许许多多的资料,来了解一下小程序: 微信小程序: 小程序是一种不需要下载安装即可使用的应用,它实现了应用&quo ...
- 在Eclipse打开文件目录
1.在Eclipse中使用外部命令 2.配置外部命令 3.设置使用的命令和参数 4.设置使用notepad++打开文件
- ELK之java虚拟机安装1
建议:直接按照默认路径,下面有一个路径我有点小改动 java最新版本1.12 从官网上下载oracle官网上的jdk 1.双击这个jdk.exe 2.点击"是" 3.点击下图的&q ...
- el-dialog 一些问题 局中滚动
.el-dialog { position: absolute; top: 50%; left: 50%; margin: 0 !important; transform: translate(-50 ...
- LeetCode93 Restore IP Addresses
题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...