lua_gettable和lua_settable


記錄lua CAPI的使用
兩個函數的聲明如下
void lua_gettable(lua_State *L, int index);
void lua_settable (lua_State *L, int index);

 

 在lua文件中定義了一個全局info表,如果我們想要在c++中獲取lua表中字段,這時候lua_gettable這個函數就可以派上用場了;首先我們先清空棧,然后注冊info到棧中,此時info處於棧頂,用負數下標表示法為-1,壓入想要找的字段name(以字符串形式), 此時棧中有兩個元素 分別為棧頂-1 “name”,-2 info表;此時調用lua_gettable,參數中的index指定當前info表下標,執行接收后會把棧頂的”name" 替換為info中的name字段值”xy”;至此實現c++中獲取lua表字段值。

為了簡便使用lua還提供了一個函數lua_getfield,功能和lua_gettable一樣

 

lua_settable會把棧頂作為value,棧頂的下一個位置作為key設置到index指向的table,最后把這兩個彈出彈出棧,這時候settable完成。

什么意思呢,在我們的例子中棧有三個元素,-1將作為value,-2作為key,-3是指定要操作的表,即 (table[key] = value)

 

 該函數的index同樣是指定表在棧中所在的下標;至此將lua info表中的name字段該為success;

同樣的有一個lua_setfield函數,多了一個參數指定要更改的字段名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM