Lua API 小記

Lua API 小記

ID:44138772

大?。?14.75 KB

頁數:11頁

時間:2019-10-19

Lua API 小記_第1頁
Lua API 小記_第2頁
Lua API 小記_第3頁
Lua API 小記_第4頁
Lua API 小記_第5頁
資源描述:

《Lua API 小記》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、《LuaAPI小記》轉載自RingOfTheC[ring.of.the.c@gmail.com]一、第一部分(API)這些東西是平時遇到的,覺得有一定的價值,所以記錄下來,以后遇到類似的問題可以查閱,同時分享出來也能方便需要的人,轉載請注明來自RingOfTheC[ring.of.the.c@gmail.com]打算記錄一些lua_api,可能會覺得lua文檔中已經說的很清楚了,但是我將用自己的方式,記錄下我認為重要的東西,先約定一下api說明的格式編號.api作用簡述api函數原型api操作說明返回值說明對棧的影響注意事項1.建一個新表voidlu

2、a_createtable(lua_State*L,intnarr,intnrec)創(chuàng)建一個新的table,并把它放在棧頂.narr和nrec分別指定該table的array部分和hash部分的預分配元素數量無返回值棧高度+1,棧頂元素是新table#definelua_newtable(L)lua_createtable(L,0,0)常用這個2.取表中的元素voidlua_getfield(lua_State*L,intindex,constchar*k)操作:arr=Stack[index]//arr肯定是表Stack.push(arr[k])取

3、表中鍵為k的元素,這里的表是由index指向的棧上的一個表無返回值棧高度+1,棧頂元素是(Stack[index])[k]注意,該操作將觸發(fā)__index元方法3.給表中的元素賦值voidlua_setfield(lua_State*L,intindex,constchar*k)操作:arr=Stack[index]arr[k]=Stack.top()Stack.pop()給表中鍵為k的元素賦值value(value就是棧頂元素),這里的表是由index指向的棧上的一個表無返回值棧高度-1,被彈出的是value注意,該操作將觸發(fā)__newindex元

4、方法4.取表元素和表元素賦值voidlua_gettable(lua_State*L,intindex)操作:ele=Stack[index]key=Stack.top()Stack.pop()value=ele[key]Stack.push(value)根據index指定取到相應的表;取棧頂元素為key,并彈出棧;獲取表中key的值壓入棧頂.無返回值棧高度不變,但是發(fā)生了一次彈出和壓入的操作,彈出的是key,壓入的是value注意,該操作將觸發(fā)__index元方法voidlua_settable(lua_State*L,intindex)操作:el

5、e=Stack[index]value=Stack.top()Stack.pop()key=Stack.top()Stack.pop()ele[key]=value根據index指定取到相應的表;取棧頂元素做value,彈出之;再取當前棧頂元素做key,亦彈出之;然后將表的鍵為key的元素賦值為value無返回值棧高度-2,第一次彈出value,第二次彈出key注意,該操作將觸發(fā)__newindex元方法5.對table的一些操作[不引發(fā)原方法]voidlua_rawget(lua_State*L,intindex)和lua_gettable操作一樣

6、但是不觸發(fā)相應的元方法voidlua_rawgeti(lua_State*L,intindex,intn)操作:ele=Stack[index]value=ele[n]Stack.push(value)無返回值棧+1,棧頂新增元素就是value不觸發(fā)相應的元方法voidlua_rawset(lua_State*L,intindex)和lua_settable操作一樣但是不觸發(fā)相應的原方法voidlua_rawseti(lua_State*L,intindex,intn)操作:ele=Stack[index]value=Stack.top()Stack

7、.pop()ele[n]=value無返回值棧-1,棧頂將value彈出不觸發(fā)相應的元方法6.復制棧上元素并壓入棧voidlua_pushvalue(lua_State*L,intindex)操作:value=Stack[index]Stack.push(value)無返回值棧+17.創(chuàng)建一個元表intluaL_newmetatable(lua_State*L,constchar*tname)操作:1.在注冊表中查找tname,如果已經注冊,就返回0,否者繼續(xù),并平棧lua_getfield(L,LUA_REGISTRYINDEX,tname)if(

8、!lua_isnil(L,-1))return0;lua_pop(L,1);2.創(chuàng)建一個表,并注冊,返回1l

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯系客服處理。