0
我想在Lua中爲腳本編寫器創建幾個函數,但是當調用這些函數時,我希望它們實際上使用我定義的參數調用單個函數。這可能是這樣的:帶元數據的Lua回調
的Lua:
foo1()
foo2()
C++:
int myFunction(lua_State * context)
{
int numArgs = lua_gettop(context);
int topOfStack = -3;
bool lightUserDataFlag = lua_islightuserdata(context, topOfStack);
if(lightUserDataFlag)
{
}
}
}
所以我對設置有點困惑。我正試圖用一個參數註冊回調。這是我迄今爲止所做的,並且有些東西並沒有保存函數註冊的參數;它似乎只保存了我添加的最後一個參數。
void setupCallback()
{
lua_register(context, "foo1", Callback);
lua_pushlightuserdata(context, &value[0]);
lua_register(context, "foo2", Callback);
lua_pushlightuserdata(context, &value[1]);
}
當lua調用我的回調函數時,我總是看到值[1],而不是值[0]。我玩了註冊回調的概念,然後添加了一個表格,但我不確定這會讓我更進一步。
至於爲什麼:我試圖抽象函數名稱,以便爲我們的lua程序員編寫代碼更簡單,但這些只需要轉換爲相同的參數化函數。想想它通過傳遞一個參數添加更改設置,但命名方式不同。
想法?
這正是我需要的。我結束了這一點。 (lua_State *上下文) int \t回調(lua_State *上下文) { int val = lua_tointeger(context,lua_upvalueindex(1)); cout << val << endl; ... void setup() { lua_pushnumber(context,3); lua_pushcclosure(context,Callback,1); lua_setglobal(context,「foo1」); lua_pushnumber(context,42); lua_pushcclosure(context,Callback,1); lua_setglobal(context,「foo2」); –
@MickeyKawick:您應該通過點擊複選框來接受滿足您需求的答案。 – Managu