[英]Convert Lua table to C array?
我正在尋找的是:
lua腳本
MY_ARRAY = {
00, 10, 54, 32,
12, 31, 55, 43,
34, 65, 76, 34,
53, 78, 34, 93
}
c代碼
lua_Number array[] = lua_getarray("MY_ARRAY");
這可能嗎? 是否有類似的東西可以更輕松地處理C中的lua表。
你可以自己寫這樣的功能! 它不應該是太多的線。 但是使用指針比使用數組更好,因為它們可以指向任意數量的元素。 界面可能是這樣的:
lua_Number *values;
size_t nvalues;
values = luaGetNumbers("MY_ARRAY", &nvalues);
/* the number of values is now nvalues */
for (int i=0; i<nvalues; i++) {
/* do something with values[i] */
}
free(values);
實施應使用以下功能(來自http://www.lua.org/manual/5.2/manual.html ):
void lua_getglobal (lua_State *L, const char *name);
將全局名稱的值壓入堆棧。
void lua_gettable (lua_State *L, int index);
將值t [k]推入堆棧,其中t是給定有效索引處的值,k是堆棧頂部的值。
此函數從堆棧中彈出鍵,將結果值放在其位置)。 與Lua一樣,此函數可能觸發“索引”事件的元方法(參見§2.4)。
lua_Number lua_tonumberx (lua_State *L, int index, int *isnum);
將給定可接受索引處的Lua值轉換為C類型lua_Number(請參閱lua_Number)。 Lua值必須是可轉換為數字的數字或字符串(參見§3.4.2); 否則,lua_tonumberx返回0。
如果isnum不為NULL,則為其引用對象分配一個布爾值,指示操作是否成功。
void lua_len (lua_State *L, int index);
返回給定可接受索引處的值的“長度”; 它等同於Lua中的'#'運算符(參見§3.4.6)。 結果被推到堆棧上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.