metatable

    0熱度

    1回答

    如何從實體框架表或上下文創建MetaTable?我使用的是代碼優先。 這是爲了用於一些DynamicData方法

    3熱度

    1回答

    例如: local my_table = { name = "my table" } local my_table_mt = {} function my_table_mt.__tostring(tbl) return "%s<%s>":format(tbl.name or "?", rawtostring(tbl)) end 是這樣的可能嗎?我知道rawtostring方法

    1熱度

    1回答

    Lua API有一個函數lua_getmetatable如果值有一個,它將獲取帶有元函數的表。 Lua輔助庫(它是lua API的一部分)具有另一個功能luaL_getmetatable這是一個將從LUA_REGISTRYINDEX中提取值的宏。 但這個庫luaL_getmetafield的另一個功能並不是你期望的 - 它會在get_metatable的位置尋找一個方法。 爲什麼有兩個不同的位置?

    1熱度

    1回答

    我想查詢某個對象的metatable的名稱。 想想看,我有些元表註冊爲以下幾點: Object obj; // some C object luaL_newmetatable(lua, "my_metatable"); // it's empty lua_pushlightuserdata(lua, &obj); luaL_setmetatable(lua, "my_metatable"

    3熱度

    1回答

    我的C++程序中有對象,我將其作爲userdata傳遞給Lua,並且我重寫此用戶數據的metatable,以便對象的索引(通過__newindex和__index)導致對C的調用,C將該賦值轉換爲影響C++對象或將C++元素轉換爲Lua值(另一個用戶數據或bool,數字,字符串等基本類型)。 userdata作爲參數傳遞給從我的C++程序調用的類似事件的Lua函數。 luaL_newmetatab

    0熱度

    1回答

    我試圖模仿: b = {1,2,3} a = setmetatable({1,nil,3},{__index = b}) print(a[2]) -- prints 2 與: b = {1,2,3} a = setmetatable({1,nil,3},{__index = function(t,k) rawget(b,k) end}) print(a[2]) -- nil 我做了

    1熱度

    1回答

    我知道可以在lua中爲表添加超載操作符。通過這樣做: foo = { value = 10 } bar = { value = 15 } mt = { __add = function(left,right) left.value = left.value + right.value; return left; end }

    1熱度

    1回答

    我最近在lua學習了美式餐桌的存在,並且我正在與他們一起玩耍,直到有一個想法出現在我的腦海中:是否有可能使用這些來嘗試避免餐桌上的「重複」?我搜索和搜索,到目前爲止找不到我在找什麼,所以我在這裏。 因此,這裏就是我會希望能夠做的,目的: 這是一個在魔獸世界的插件程序使用。 我想製作一個工具,當在全局範圍中創建一個變量或函數時(爲了避免使用它,因爲可能與其他插件可能發生的命名衝突),會提示警告。 我

    1熱度

    1回答

    我想知道是否可以通過引用來傳遞元表,並且當您想要爲多個表使用相同的元表時,在setmetatable()中聲明它是內聯的。 我的目標是節省內存,但前提是它確實會產生顯着差異。 什麼我說的是這樣的: -- Passing the meta table by reference: JSON1 = { metaTable = { __index = function (t, k)

    1熱度

    1回答

    是否可以在Lua中打印表格而不使用metatables?在功能print中總是調用tostring來格式化它的輸出。但是,如果我在我的桌子覆蓋tostring,然後我得到以下結果: > a = {} > a.tostring = function() return "Lua is cool" end > print(a) table: 0x24038c0