簡體   English   中英

將Lua表轉換為C數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM