1
我正在尋找的是這樣的:將Lua錶轉換爲C數組?
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錶轉換爲C數組?
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);
給定的可接受的索引到C型 lua_Number(見lua_Number)在Lua的值轉換。 Lua值必須是可轉換爲數字的數字或 字符串(請參閱第3.4.2節);否則,lua_tonumberx 返回0
如果ISNUM不是NULL,其指示對象被分配一個布爾值, 指示操作是否成功。
void lua_len (lua_State *L, int index);
返回給定的可接受的索引處的值的 「長度」;它相當於Lua中'#'運算符的 (請參閱第3.4.6節)。結果是 推入堆棧。