亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

獲取Lua表結構(table)數據實例

2024-07-21 23:04:00
字體:
來源:轉載
供稿:網友

只是獲取一個全局變量什么的太沒意思了,今天我們來玩個高難度的——獲取Lua表結構的數據。
(旁白:O O!我是不是該說點什么?)

上一章傳送門:http://www.49028c.com/tech/jiaoben/lua/265348.html

1. 什么是table

table是Lua里最強大的數據類型,我們可以當成是數組,但是它又和數組有點不一樣,建議大家看看Lua的語法教程,因為我對table也沒有熟悉到可以給大家解釋的程度。
(旁白:那你還寫什么教程。。。)

2. 獲取table變量

現在,我們給helloLua.lua文件添加一個table全局變量:

復制代碼 代碼如下:
-- helloLua.lua文件
myName = "beauty girl"

 

helloTable = {name = "mutou", IQ = 125}


我們看到,多了一個helloTable的變量,它和數組十分相似,又和HashMap有點類似,總之它很強大。

 

(旁白:我覺得亮點是,你的IQ有125?我覺得乘以2的話,還有點可能~?。?br /> 話說,125乘以2等于多少?…250 ….O O!
獲取helloTable變量的方式和以前是一樣的:

復制代碼 代碼如下:

/* 取得table變量,在棧頂 */
    lua_getglobal(pL, "helloTable");

這樣,helloTable變量就被存放到棧頂。
可我們并不是要取table變量,因為C++中是無法識別Lua的table類型的,所以我們要取得table中具體的值,也就是name和IQ的值。

 

3. lua_gettable函數

有一個和lua_getglobal類似的函數,叫做lua_gettable,顧名思義,它是用來取得table相關的數據的。
(旁白:廢話少點好吧= =)
 
lua_gettable函數會從棧頂取得一個值,然后根據這個值去table中尋找對應的值,最后把找到的值放到棧頂。
lua_pushstring()函數可以把C++中的字符串存放到Lua的棧里;
然后再用lua_gettable()取執行前面所說的步驟,lua_gettable的第二個參數是指定的table變量在棧中的索引。
(旁白:小笨木,我被你繞暈了。。。)
 
為了照顧旁白這個笨蛋,我們畫個圖來理解:

Lua,表結構,table

這是初始狀態,堆棧里還沒有任何東西,那么,現在要先把helloTable變量放到棧頂:

復制代碼 代碼如下:
/* 取得table變量,在棧頂 */
    lua_getglobal(pL, "helloTable");

然后就變成了這樣:

 

Lua,表結構,table

接著,我們要取得table的name對應的值,那么,先要做的就是把”name”字符串入棧:

復制代碼 代碼如下:
/* 將C++的字符串放到Lua的棧中,此時,棧頂變為“name”, helloTable對象變為棧底 */
    lua_pushstring(pL, "name");

然后變成這樣:

 

Lua,表結構,table

(旁白:不帶這樣啊,你偷偷加上了棧的索引~?。?br />  
注意了,我把棧的索引也加上了,因為我們即將要使用,這次我們用負數索引(不了解負數的索引的朋友請閱讀第03章的教程哈~)。
由于”name”的入棧,現在helloTable變量已經不在棧頂了。
接著,我們調用要做最重要的一步了,取得name在table中對應的值:

復制代碼 代碼如下:

/*
        從table對象尋找“name”對應的值(table對象現在在索引為-2的棧中,也就是當前的棧底),
        取得對應值之后,將值放回棧頂
    */
    lua_gettable(pL, -2);

此時,棧變成這樣:

 

Lua,表結構,table

(旁白:發生什么事?為什么“mutou”突然出現在棧頂?!為毛!是你自己畫上去的吧?。?br />  
lua_gettable倒底做了什么事情?
首先,我們來解釋一下lua_gettable的第二個參數,-2是什么意思,-2就是剛剛helloTable變量在棧中的索引。
然后,Lua會去取得棧頂的值(之前的棧頂是”name”),然后拿著這個值去helloTable變量中尋找對應的值,當然就找到”mutou”了。
最后,Lua會把找到的值入棧,于是”mutou”就到了棧頂了。
(旁白:你妹紙的。。。沒事,我就罵罵人)
 
最后我們只需要取出棧頂的數據就可以了,完整代碼如下:

復制代碼 代碼如下:

/* 初始化 */
    lua_State* pL = lua_open();
    luaopen_base(pL);

 

    /* 執行腳本 */
    luaL_dofile(pL, "helloLua.lua");

    /* 取得table變量,在棧頂 */
    lua_getglobal(pL, "helloTable");

    /* 將C++的字符串放到Lua的棧中,此時,棧頂變為“name”, helloTable對象變為棧底 */
    lua_pushstring(pL, "name");

    /*
        從table對象尋找“name”對應的值(table對象現在在索引為-2的棧中,也就是當前的棧底),
        取得對應值之后,將值放回棧頂
    */
    lua_gettable(pL, -2);

    /* 現在表的name對應的值已經在棧頂了,直接取出即可 */
    const char* sName = lua_tostring(pL, -1);
    CCLOG("name = %s", sName);


好了,本章到此結束。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区三区久久| 亚洲成人网av| 国产香蕉精品视频一区二区三区| 91久久精品视频| 色无极影院亚洲| 亚洲精品自拍第一页| 亚洲最新在线视频| 国产69精品99久久久久久宅男| 91手机视频在线观看| 国产精品第七影院| 国模精品视频一区二区| 亚洲第一天堂av| 亚洲国产精品悠悠久久琪琪| 国产精品电影网站| 97婷婷大伊香蕉精品视频| 亚洲欧美日韩另类| 国产精品草莓在线免费观看| 亚洲国产精品网站| 国产91精品最新在线播放| 国产精品a久久久久久| 少妇久久久久久| 国产日韩精品入口| 久久久精品2019中文字幕神马| 91色p视频在线| 国内精品伊人久久| 一本一本久久a久久精品综合小说| 欧美午夜片欧美片在线观看| 精品亚洲国产视频| 欧美精品18videosex性欧美| 国产精品久久久久久久午夜| 国产精品黄页免费高清在线观看| 国产精品一区专区欧美日韩| 91性高湖久久久久久久久_久久99| 午夜精品一区二区三区在线播放| 欧美电影免费观看电视剧大全| 久久精品99久久久久久久久| 久久6免费高清热精品| 亚洲一区二区久久| 精品日本美女福利在线观看| 日韩电影大全免费观看2023年上| 久久久亚洲精品视频| 亚洲男人的天堂在线| 国产成人免费91av在线| 欧美日韩黄色大片| 欧美极品美女电影一区| 久久精品视频网站| 精品国产精品三级精品av网址| 亚洲综合中文字幕在线观看| 久久夜色精品国产欧美乱| 欧美性生交xxxxx久久久| 欧美高跟鞋交xxxxhd| 国产日韩欧美夫妻视频在线观看| 日韩国产精品一区| 日韩美女毛茸茸| 色综合伊人色综合网| 中文字幕av一区二区三区谷原希美| 欧美日韩中文字幕| 亚洲欧美日韩图片| 国产精品视频网站| www.日本久久久久com.| 69av成年福利视频| 7777kkkk成人观看| 久久精品99无色码中文字幕| 色av中文字幕一区| 日韩精品视频中文在线观看| 91精品国产91久久| 亚洲精品suv精品一区二区| 日韩精品欧美国产精品忘忧草| 日韩在线视频免费观看| 一本色道久久88精品综合| 久久国产精品视频| 国产精品第1页| 欧美专区国产专区| 国产精品美女免费视频| 视频直播国产精品| 欧美黄色片在线观看| 欧美性xxxx极品hd满灌| 日韩精品久久久久| 日本高清不卡的在线| 国产精品女人久久久久久| 亚洲一品av免费观看| 在线精品91av| 一本色道久久综合亚洲精品小说| 奇米成人av国产一区二区三区| 久久久久久久久国产精品| 日本一区二区三区在线播放| 播播国产欧美激情| 欧美成人一区二区三区电影| 久久久久久91香蕉国产| 久久久爽爽爽美女图片| 欧美精品在线观看91| 亚洲午夜精品久久久久久久久久久久| 国产在线观看不卡| 国产日韩欧美另类| 91亚洲精品视频| 91九色视频导航| 91久久国产综合久久91精品网站| 亚洲在线视频观看| 日韩精品视频在线| 一色桃子一区二区| 亚洲国产又黄又爽女人高潮的| 欧美日韩国产激情| 久久久久久噜噜噜久久久精品| 日韩小视频网址| 国产精品成av人在线视午夜片| 97人人模人人爽人人喊中文字| 91精品视频专区| 亚洲国产一区二区三区四区| 亚洲精品电影网在线观看| 色黄久久久久久| 欧美在线视频在线播放完整版免费观看| 欧美电影免费观看高清完整| 国产亚洲欧美日韩精品| 国产精品精品一区二区三区午夜版| 亚洲va欧美va国产综合剧情| 亚洲白拍色综合图区| 国产伦精品免费视频| 亚洲欧美制服丝袜| 亚洲乱码av中文一区二区| 久久久女女女女999久久| 91精品综合视频| 国产精品久久久久秋霞鲁丝| 青草成人免费视频| 97国产精品视频人人做人人爱| 欧美一级高清免费播放| 日本久久中文字幕| 最近2019年中文视频免费在线观看| 尤物yw午夜国产精品视频| 正在播放国产一区| 97在线视频一区| 亚洲天堂免费在线| 黑人欧美xxxx| 国产激情视频一区| 亚洲国产精品va| 欧美日韩福利电影| 国产色视频一区| 成人免费网视频| 国产欧美 在线欧美| 日韩一区二区在线视频| 国产日韩欧美一二三区| 国产精品电影久久久久电影网| 亚洲欧美综合精品久久成人| 粉嫩老牛aⅴ一区二区三区| 青青久久av北条麻妃黑人| 亚洲精品电影网站| 92看片淫黄大片看国产片| 成人日韩在线电影| 日韩少妇与小伙激情| 亚洲综合日韩在线| 国产精品偷伦一区二区| 久久久中文字幕| 日韩在线中文视频| 成人网欧美在线视频| 韩国三级电影久久久久久| 欧美激情在线视频二区| 国产成+人+综合+亚洲欧美丁香花| 久久人人爽人人爽人人片亚洲| 亚洲美女性视频| 国色天香2019中文字幕在线观看| 久久久亚洲天堂| 日韩国产欧美精品一区二区三区| 国产精品扒开腿做爽爽爽视频| 国产精品成人aaaaa网站| 91av视频在线播放|