--1、__index的運用 (呼叫table的乙個不存在的索引時,會使用到元表的__index元方法,搜尋元表是否也有改索引,__index可以是乙個函式也可是乙個table。)
local t =
function t:add(a,b)
return a+b;
endfunction t:add2(a,b)
return a*10+b
endlocal m =
setmetatable(m,); --設定 m 以 t 作為元表 (關鍵,注意__index,是2個下劃線)
print(m.m1); --列印自身引數m1
print(m.t1); --列印通過 m 呼叫 t 的引數t1
print(m:add(1,2));--列印通過 m 呼叫 t 的方法add
print(m:add2(1,2));--列印通過 m 呼叫 t 的方法add2
--2、__newindex的運用 (a、當為table中乙個不存在的索引賦值時,會去呼叫元表中的__newindex元方法,輸出了引數資訊。
-- b、__newindex是乙個函式時會將賦值語句中的表、索引、賦的值當作引數去呼叫。不對錶進行改變)
local a =
local b = {}
setmetatable(b,a);
b.newkey = 10
print(b.newkey);
執行結果:
Lua元表和元表方法
今天學習lua中的元表,書上講的太難懂了,網上搜尋教程也將的模模糊糊,搜了一會總結了一下經驗,跟大家分享一下,希望對您有所幫助。如何設定元表?local t local mt getmetatable t nil setmetatable t,mt 將t1設定為t的元表 getmetatable t...
lua元表理解
2015 08 23 22 13 237人閱讀收藏 舉報 lua 在lua中任何變數都有乙個元表 我相信每個字串元表都是string相關,所以可以使用string length 元表中特殊的值有特殊的含義,比如 index,call,add等等。函式setmetatable a,meta 就是將me...
lua元表詳解
元表是用來定義對table或userdata操作方式的表 local t1 local t2 local t3 t1 t2 我們直接對兩個table執行 運算,會報錯 lua usercode file.lua 3 attempt to perform arithmetic on local t1 ...