2010-09-23 58 views
2

它顯然是getmetatable可以訪問元表幾種類型。似乎沒有辦法訪問數字,布爾值或零的metatable。訪問類型元表的Lua

我還想知道是否有人能夠訪問整個表格類型的metatable。爲了能夠做這樣的事情:

({}) + ({}) 

回答

0

數字,布爾值和零在默認情況下沒有metatable(因此getmetatable返回nil)。雖然你可以給他們一個debug.setmetatable

沒有公共表metatable。 (和用戶數據相同(至少是重品種))

+0

謝謝。只是想知道這一點。 – Q2Ftb3k 2010-09-27 19:37:40

5

字符串,數字,零,功能和lightuserdata對整個類型的單個元表。表和完整的用戶數據每個實例都有一個metatable。

從文檔:

表和全用戶數據有 個別元表(雖然 多個表和用戶數據可以共享 自己的元表)。所有其他 類型的值每個 類型共享一個單獨的元表;也就是說,有一個單一的 元表的所有號碼,一個是所有 字符串,etc.strings等

有沒有「表型元表」,就像沒有「元表此字符串」

默認情況下,字符串類型具有「字符串」表作爲metatable;但您可以使用debug.setmetatable() function.strings等設置其他類型的metatable。