──────────────────────────────────────────────────────────────
┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦。
└————————————┘
对你的感情正在充电中,请稍侯…
──────────────────────────────────────────────────────────────
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
──────────────────────────────────────────────────────────────
──────────────────────────────────────────────────────────────
//数组从一开始,并非从零开始
+ local tab={[1]=1,[2]=2,[3]=3,[4]=4}
+ local tab={1,2,3,4,["mark"]=5}
//lua 深入的探讨要等以后啦!可以参看lua5.3的参考手册
local tab={[1]=]1,[2]=2,[3]=3,}
local newtab=setmetable{tab,{__index = function(t,k)
return "不存在"
end,
__newindex= function(t,v,k)
print("__newindex",v,k)
error ("不能修改t")
end,
__gc = function(t)
print("gc")
end
})
tab[4]=10
print(tab[4])
local co=coroutine.create(function(arg1))
local ret1 =arf1 + 1
local arg2=coroutine.yield(ret1)
local ret2=arg2+1
return ret2
end)
local co1=coroutine.runing()
local arg1=1
local ok,ret1,ret2
ok,ret1=coroutine.resume(co,arg1)
print(co1,ok,ret1)
ok,ret2=coroutine.resume(co,ret1)
print(co1,ok,ret2)
local args
local function func()
args = "hello"
end
local funtion func()
local args ="hello"
return funtion()
args =args.. "world"
return args
end
end
local ff=func()
print(ff()) //hello
print(ff()) //hello world
print(ff()) //hello world world
需要注意的是,在c语言中0表示false,而在lua脚本中0是一个数值,它表示true。
not nil 和not false相当于c语言的true,~=表示不等于。
#include
#include
#include
#include
每一个模块都需要找出一个这样的接口。
int luaopen_uv_c(lua_state *L)
对应的lua方面
require "uv.c"
static const luaL_Reg l[]={
{"echo",lecho},
{NULL,NULL},
};
int luaopen_uv_c(lua_State * L){
luaL_newlibtable(L,l); //1
lua_pushinteger(L,0); //2
lua_setfuncs(L,l,1); //上值
//luaL_newlib(L,1);
return 1;
}
local so=require "uv.c"
so.echo
//echo为lua使用,lecho为c语言实现接口
//只需要一个参数,lua_***表示操作lua虚拟栈。
static int
lecho (lua_State *L){
lua_Integer n=lua_tointeger(L,lua_upvalueindex(1));
n++;
const char * str =lua_tostring(L,-1);
fprintf(stdout,"[n=%lld]---%s \n",n,str);
lua_pushinteger(L,n);
lua_replace(L,lua_upvalueindex(1));
return 0;
}