打算記錄一些我認為重要的常用的api:
1. 建一個新表
void lua_createtable (lua_State *L, int narr, int nrec)
創建一個新的table, 并把它放在棧頂. narr和nrec分別指定該table的array部分和hash部分的預分配元素數量
無返回值
棧高度+1, 棧頂元素是新table
#define lua_newtable(L) lua_createtable(L, 0, 0) 常用這個
2. 取表中的元素
void lua_getfield (lua_State *L, int index, const char *k)
操作: arr = Stack[index] // arr肯定是表
Stack.push( arr[k] )
取表中鍵為k的元素, 這里的表是由index指向的棧上的一個表
無返回值
棧高度+1, 棧頂元素是(Stack[index])[k]
注意, 該操作將觸發 __index 元方法
3. 保護下調用一個lua函數