2015-08-23 22:13
237人閱讀收藏
舉報
lua
在lua中任何變數都有乙個元表(我相信每個字串元表都是string相關,所以可以使用string:length()),元表中特殊的值有特殊的含義,比如__index,__call,__add等等。
函式setmetatable(a,meta) 就是將meta設定為這個名字叫做a的table的元表。所以設定元表語法上有多種花樣。 如:
function class(base)
return setmetatable({}, )
end以上就是新建乙個空表,但是他的元表的__index的值是base,由於setmetatable函式會返回第乙個引數,所以該函式會返回 {} 這個空表。
另外元表中的__index可以是函式(或者是表),以下:
****_table =
t = setmetatable({}, )
print(t["****1"],"and",t.****1,"is same")
print(t["foo"],"and",t.foo,"is same")
print(t["****2"],"and",t.****2,"is same")
當然如果你高興,你也可以事先建立一張表,而這個表裡面剛好有__index,如下:
teacher = {}
teacher.mt = {}
teacher.mt.__index =
function teacher.new (ttt)
return setmetatable(ttt,teacher.mt)
endstudent =
teacher.new(student)
print(student.yes)
print(student.ok)
那麼利用這個特性就可以完成繼承了,如下:
a = {}
a.asd = "ddd"
function a:new(b)
b = b or {}
return setmetatable(b, )
endfunction a.****()
print("hehe,just a joke")
endc = a:new()
c.****()
c.**** = "jjjj"
print(c.****)
a.****()
Lua元表metatable理解
index元方法 總結 newindex 元方法 call 元方法 定義元方法 call 最近總是遇到如果通過指令碼語言搭建乙個oop結構,於是針對lua進行了解,發現需要用到其元表metatable來實現,則對lua的metatable進行乙個理解的整理 理解 名稱 元表,本身也是乙個table ...
lua 元表理解 index
lua 表的本質是乙個hasmap的東西,是乙個key value的形式,除了nil,其他的任何值都能做key,在乙個lua表中去查詢乙個不存在的key的時候,就會觸發lua自己的一套查詢機制,同樣的繼承也是根據這個機制實現的。1.什麼是元表 我認為是乙個備用操作指南,這個指南裡面有很多方法,ind...
Lua元表和元表方法
今天學習lua中的元表,書上講的太難懂了,網上搜尋教程也將的模模糊糊,搜了一會總結了一下經驗,跟大家分享一下,希望對您有所幫助。如何設定元表?local t local mt getmetatable t nil setmetatable t,mt 將t1設定為t的元表 getmetatable t...