meta-method

    3熱度

    3回答

    假設我有一段代碼,如下面的 aTable = {aValue=1} aTable_mt = {} print(aTable) 我必須做什麼,使Lua的打印類似aTable current aValue = 1,而不是table: 0x01ab1d2。 到目前爲止,我試過設置__tostring metamethod,但似乎沒有被print調用。是否有一些metamethod我已經失蹤或答案

    1熱度

    1回答

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

    6熱度

    2回答

    有沒有人知道lua 5.2的實際執行情況。 metamethod __pairs?換句話說,如何在metatable中實現__pairs作爲元方法,使其與pairs()完全相同? 我需要覆蓋__pairs,並且想要跳過一些我在表中添加的虛擬變量。

    0熱度

    1回答

    我使用tolua ++將C++類型自動公開給Lua。看來,當我暴露某種類型,例如 struct TestComponent { float foo; string bar; } 什麼tolua做(至少這是它似乎像我)是添加一個新的元表到Lua環境(在這種情況下,它只是被稱爲TestComponent)與一些正規元方法,如__add, __lt以及__index,__ne

    3熱度

    2回答

    對於深度嵌套表格中的字段,例如text.title.1.font。即使您使用 if text.title.1.font then ... end 它會導致類似「試圖指數全球‘文本’(一個零值)」的錯誤,如果表中的任何水平實際上並不存在。當然,人們可能試圖檢查表中每一層的存在,但看起來相當麻煩。我想知道是否有一個安全和更漂亮的方式來處理這個問題,例如當引用這樣一個對象時,nil是值而不是觸發錯誤

    3熱度

    2回答

    當沒有鍵引用時,表有可能返回一個特定的值而不是自己的引用嗎? 比方說,我有如下表: local person = { name = "Kapulani", level = 100, age = 30, } 在Lua中,我可以很容易地提及「person.name」,「person.level」,或「person.age」而獲得的值如預期。但是,在某些情況下,我可能

    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方法

    4熱度

    3回答

    __index訪問爲永恆不變的,當被調用時: local foo = bar["foo"]; __newindex被稱爲訪問時,作爲可變指標不存在: local bar = { } bar["foo"] = 123 -- calls __newindex bar["foo"] = 456 -- does NOT call __newindex 是否有元方法可以在訪問某個鍵時被調用爲易變

    3熱度

    2回答

    我試圖在Lua中實現我自己的字符串長度方法。 我已經成功覆蓋了字符串的len()方法,但我不知道如何爲#操作符執行此操作。 orig_len = string.len function my_len(s) print(s) return orig_len(s) end string.len = my_len abc = 'abc' 如果我稱之爲: print(ab

    0熱度

    1回答

    我的目標是創建具有完全擴展多重繼承的類的標準方法,並且不僅能夠繼承其他類而且還能夠繼承到實例自己通過new()-構造器。如果我從類或其對象中調用缺少的值,並且此值是一個函數,我希望將它存儲到類中供以後使用,但不在對象/實例中(在大量實現相同函數時的性能問題一類課程)。 目前,我使用的是createClass(...) - 功能非常相似,在官方教程系列(http://www.lua.org/pil/