最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua編程示例(五): C語言對(duì)Lua表的讀取和添加

 更新時(shí)間:2015年07月09日 10:42:53   投稿:junjie  
這篇文章主要介紹了Lua編程示例(五): C語言對(duì)Lua表的讀取和添加,本文直接給出代碼實(shí)例,需要的朋友可以參考下
#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;
 //默認(rèn)棧頂是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); //刪掉產(chǎn)生的查找結(jié)果
 return res;
}
void setfield(lua_State *L,char *key,double value){
 //默認(rèn)棧頂是table
 lua_pushstring(L,key);
 lua_pushnumber(L,value);
 lua_settable(L,-3); //將這一對(duì)鍵值設(shè)成元素
}

struct mycolor{
 char *name;
 unsigned char red,green,blue;
}Color[]={
 {"WIETH",1,1,1},
 {"BLACK",0,0,0},
 {"BLUE",0,0,1}
};
//先創(chuàng)建一個(gè)空的棧,填入元素,用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 中就一行代碼:

復(fù)制代碼 代碼如下:

background = {r=1,g=0.5,b=0.7} 

運(yùn)行輸出結(jié)果為:

The background color : red = 1.00 ,green = 0.50 ,blue = 0.70
The WIETH color : red = 1.00 ,green = 1.00 ,blue = 1.00
The BLUE color : red = 0.00 ,green = 0.00 ,blue = 1.00

相關(guān)文章

  • Lua中string.len()使用指南

    Lua中string.len()使用指南

    Lua 字符串庫中的所有函數(shù)都導(dǎo)出在模塊 string 中,今天我們先來看看string.len()的使用,有需要的小伙伴可以參考下
    2016-08-08
  • Lua中的metatable詳解

    Lua中的metatable詳解

    這篇文章主要介紹了Lua中的metatable詳解,本文詳細(xì)講解了metatable的作用、定義操作符行為、為 Lua 函數(shù)庫提供支持等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Lua函數(shù)用法研究

    Lua函數(shù)用法研究

    這篇文章主要介紹了Lua函數(shù)用法研究,本文講解了函數(shù)、變量的用法、返回多個(gè)結(jié)果值和可變參數(shù)等特性的示例,需要的朋友可以參考下
    2015-07-07
  • Lua腳本實(shí)現(xiàn)遞歸刪除一個(gè)文件夾

    Lua腳本實(shí)現(xiàn)遞歸刪除一個(gè)文件夾

    這篇文章主要介紹了Lua腳本實(shí)現(xiàn)遞歸刪除一個(gè)文件夾,本文給出了C++和Lua兩個(gè)版本的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • 詳解Lua中的變量相關(guān)知識(shí)點(diǎn)

    詳解Lua中的變量相關(guān)知識(shí)點(diǎn)

    這篇文章主要介紹了Lua中的變量相關(guān)知識(shí)點(diǎn),是Lua入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • lua 基礎(chǔ)教程

    lua 基礎(chǔ)教程

    Lua 的語法比較簡單,學(xué)習(xí)起來也比較省力,但功能卻并不弱。所以,我只簡單的歸納一下Lua的一些語法規(guī)則,使用起來方便好查就可以了。估計(jì)看完了,就懂得怎么寫Lua程序了。
    2015-09-09
  • C++中調(diào)用Lua配置文件和響應(yīng)函數(shù)示例

    C++中調(diào)用Lua配置文件和響應(yīng)函數(shù)示例

    這篇文章主要介紹了C++中調(diào)用Lua配置文件和響應(yīng)函數(shù)示例,本文使用Lua文件作為配置文件,并寫了幾個(gè)響應(yīng)函數(shù)以便在C++中使用,需要的朋友可以參考下
    2015-07-07
  • Lua語言新手簡單入門教程

    Lua語言新手簡單入門教程

    這篇文章主要給大家介紹的是關(guān)于Lua語言新手入門的簡單教程,文中通過示例代碼一步步介紹的非常詳細(xì),對(duì)各位新手們的入門提供了一個(gè)很方便的教程,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Lua實(shí)現(xiàn)正序和倒序的文件讀取方法

    Lua實(shí)現(xiàn)正序和倒序的文件讀取方法

    這篇文章主要介紹了Lua實(shí)現(xiàn)正序和倒序的文件讀取方法,本文講解使用table生成鏈表完成正序和倒序的文件讀入功能,需要的朋友可以參考下
    2015-04-04
  • lua實(shí)現(xiàn)的2048小游戲

    lua實(shí)現(xiàn)的2048小游戲

    之前給大家分享了好幾個(gè)語言版本的2048了,今天再給大家分享一個(gè)lua腳本實(shí)現(xiàn)的2048小游戲,小伙伴們參考下吧。
    2015-03-03

最新評(píng)論

巴楚县| 西乌珠穆沁旗| 黔南| 弋阳县| 泾川县| 富蕴县| 普陀区| 吉安市| 周宁县| 全南县| 北辰区| 探索| 师宗县| 桑日县| 南川市| 民权县| 托克托县| 西藏| 施秉县| 吉首市| 曲沃县| 富源县| 靖宇县| 会东县| 赤水市| 调兵山市| 元朗区| 策勒县| 芦溪县| 龙口市| 吐鲁番市| 东台市| 沭阳县| 中江县| 视频| 平湖市| 凌云县| 南开区| 广德县| 清涧县| 新巴尔虎左旗|