博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua-快速阅读 - socketref,再见!高德 - C++博客
阅读量:7096 次
发布时间:2019-06-28

本文共 1902 字,大约阅读时间需要 6 分钟。

table 是个怪物,有很多facets,类似array,map,struct,整个是个混合物,用起来也比较怪异。
t={1,2,3,a="gen",b=100}
t={[0]=1;["name"]="ultra"}
t.a, t.b , t[0] , t["name"]
表操作函数:
ipairs,pairs迭代函数
table.getn(t)   len of table
================================================================
function() 可以接受任意多的参数,如果实参数过多将丢弃,过少将默认设置为nil
同样可以返回多个参数
a,b=foo()
表作为参数传递到function
function rename( arg ) os.rename(arg.old,arg.new) end
rename{old="";new=""}
匿名函数(lambda in python )
foo = function(x) return x*2 end
局部函数 local f=function(x) ... end
================================================================
for n=start,end,step do ... end
while b do   ... end
repeat do .... until
if then .. elseif then ...  end;
有意思的语法表达式:
    print a or b or c   如果a=false,尝试b...
注释: --     --{ --} 
字符串操作:    .. 连接
==================================================
io 函数:
loadfile('test.lua')()    execute external lua script
loadstring('print 100')()
代码测试:
=======================
c程序调用lua函数
c 程序:
void call_lua_func(){
    lua_State *s = lua_open();
    luaL_openlibs(s);
    int c = lua_gettop(s);
    luaL_dofile(s,"/nandflashpartition/test1.lua");
    lua_getglobal(s,"add");
    lua_pushnumber(s,0.25);
    lua_pushnumber(s,8);
    if( lua_pcall(s,2,1,0)){
        std::cout<< lua_tostring(s,-1)<<std::endl;
    }
    double r;
    r = lua_tonumber(s,-1);
    lua_close(s);
}
lua程序:
function add(x,y)
    return x*y
end
--------------------------------
lua访问c程序空间变量
1.定义变量student.h
extern char * gender;
extern int class_count;
2.创建pkg文件 student.pkg
$#include "student.h"
extern char * gender;
extern int class_count;
3.产生tolua++存根框架
tolua++ -o student.pkg
4.创建lua测试代码 call_c.lua
print(gender)
print(class_count)  访问c 空间的变量
5.c测试代码
char * gender;
int class_count;
void lua_call_c(){
    int  tolua_student_open (lua_State* tolua_S);
    lua_State * s = lua_open();
    luaopen_base(s);
    gender ="my gender is male!";
    class_count = 100;
    tolua_student_open(s);
    luaL_dofile(s,"/nandflashpartition/call_c.lua");
    lua_close(s);
}
6.build && test it!

转载地址:http://pbxql.baihongyu.com/

你可能感兴趣的文章
【C语言】二维数组中的查找,杨氏矩阵
查看>>
linux中查看软件文件安装路径
查看>>
1019 集合论与图论
查看>>
Latex 公式在线可视化编辑器
查看>>
【Java】大文本字符串滤重的简单方案
查看>>
hibernate 中多对多关系对象集合的保存
查看>>
黄聪:AngularJS 动态加载控制器实例-ocLoazLazy
查看>>
让你提前认识软件开发(26):数据库脚本的凝视
查看>>
百度地图api
查看>>
Linq查询满足条件记录集
查看>>
《CSS核心技术详解》
查看>>
bzoj 1030: [JSOI2007]文本生成器 (ac自己主动机上的dp)
查看>>
Intellij Idea 使用时总是打开上次的项目
查看>>
《凑硬币》 动态规划算法入门
查看>>
元素视差方向移动jQuery插件-类似github 404页面效果
查看>>
8086的储存器编址
查看>>
Java中的抽象
查看>>
robin 今天来南大了
查看>>
Neo4j下执行cypher-shell时,Connection refused问题解决?
查看>>
跟我一起学习VIM - vim插件合集
查看>>