lua元表理解

2021-07-22 14:48:09 字數 1229 閱讀 9524

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...