时间:2021-05-23
#include "stdafx.h"lua_State *L;void load_lua(char *filename){ L=luaL_newstate(); luaL_openlibs(L); if((luaL_loadfile(L,filename) || lua_pcall(L,0,0,0))!= 0){ luaL_error(L,"loadfile error! \n %s",lua_tostring(L,-1)); }}double getfield(lua_State *L,char * key){ double res; //默认栈顶是table,将key入栈 lua_pushstring(L,key); lua_gettable(L,-2); //查找键值为key的元素,置于栈顶 if(!lua_isnumber(L,-1)){ luaL_error(L,"num get error! %s\n",lua_tostring(L,-1)); } res = lua_tonumber(L,-1); lua_pop(L,1); //删掉产生的查找结果 return res;}void setfield(lua_State *L,char *key,double value){ //默认栈顶是table lua_pushstring(L,key); lua_pushnumber(L,value); lua_settable(L,-3); //将这一对键值设成元素}struct mycolor{ char *name; unsigned char red,green,blue;}Color[]={ {"WIETH",1,1,1}, {"BLACK",0,0,0}, {"BLUE",0,0,1}};//先创建一个空的栈,填入元素,用lua_setglobal弹出表,并赋成全局变量void setcolor(lua_State *L,struct mycolor col){ lua_newtable(L); setfield(L,"r",col.red); setfield(L,"g",col.green); setfield(L,"b",col.blue); lua_setglobal(L,col.name);}void getcolor(lua_State *L,char *key){ lua_getglobal(L,key); if(!lua_istable(L,-1)){ luaL_error(L,"'background' is not a table! %s\n",lua_tostring(L,-1)); } double red; double green; double blue; red = getfield(L,"r"); blue = getfield(L,"b"); green = getfield(L,"g"); printf("The %s color : red = %.2f ,green = %.2f ,blue = %.2f\n",key,red,green,blue);}int _tmain(int argc, _TCHAR* argv[]){ load_lua("test.lua"); getcolor(L,"background"); int i = 0; while(Color[i].name != NULL){ setcolor(L,Color[i]); i++; } getcolor(L,"WIETH"); getcolor(L,"BLUE"); return 0;}
test.lua 中就一行代码:
复制代码 代码如下:
background = {r=1,g=0.5,b=0.7}
运行输出结果为:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在Lua编程语言中的while循环语句,只要给定的条件为真时将重复执行的目标语句。语法Lua编程语言中的while循环的语法是:复制代码代码如下:while(c
下表列出了所有的Lua语言支持的关系运算符。假设变量A持有10和变量B持有20则:示例试试下面的例子就明白了所有的Lua编程语言提供的关系运算符:复制代码代码如
下表列出了所有的Lua语言支持的逻辑运算符。假设变量A持有true,而变量B持有false:示例试试下面的例子就明白了所有的Lua编程语言提供的逻辑运算符:复制
前言对于Lua的基础总结总算告一段落了,从这篇博文开始,我们才真正的进入Lua的世界,一个无聊而又有趣的世界。来吧。Lua语言是一种嵌入式语言,它本身的威力有限
Lua中I/O库用于读取和处理文件。有两种类型的文件操作,在Lua即隐含文件的描述符和明确的文件描述符。对于下面的例子中,我们将使用一个示例文件test.lua