--[[元方法__index:對乙個表a的元素id賦值,如果在表a中元素id不存在,不對id賦值]
會呼叫元表中(如果元表存在)的__newindex表,如果表a中存在id這個元素,則對賦值,不呼叫元表中__newindex]]
local newindextable = {}
local metablea =
local tablea =
setmetatable( tablea, metablea)
列印結果:tablea.id = "change id "
tablea.age = "change age"
print(tablea.id, newindextable.id)
print(tablea.age, newindextable.age)
以上可以簡寫為:***************20180506**********=
change id nil
nil change age
***************20180506**********=
rawset/rawget:繞過metatable的行為約束,強制對原始表進行一次原始的操作;一次原始的操作其實並不會加速**執行的速度,效率一樣。local newindextable = {}
local tablea = setmetatable( , )
tablea.id = "change id "
tablea.age = "change age"
print(tablea.id, newindextable.id)
print(tablea.age, newindextable.age)
格式:rawset(table, key, value)
rawget(table, key)
如果我們有以下需求:
那麼,我們可以考慮使用raw方法。
Lua中的元方法 newindex詳解
好吧,我寫文章的進度已經趕不上看書的進度了,簡單的幾段文字就夠我嘮叨一篇文章了。今天繼續來說說元方法,與 index有點相似的 newindex元方法。1.查詢與更新 注意,呼叫 這個詞,只是呼叫,而不是賦值。如果,我們要對table中某個不存在的字段賦值呢?小若 就,直接賦值啊!沒錯,我們直接就能...
lua中的元表和元方法
元表概念 lua中,物件導向是用元表這種機制來實現的 元表 matatable lua在建立新的table時不會建立元表,比如以下 就可以演示 local t print getmetatable t nil設定元表和獲取元表 getmetatable和setmetatable 使用getmetat...
Lua元表和元表方法
今天學習lua中的元表,書上講的太難懂了,網上搜尋教程也將的模模糊糊,搜了一會總結了一下經驗,跟大家分享一下,希望對您有所幫助。如何設定元表?local t local mt getmetatable t nil setmetatable t,mt 將t1設定為t的元表 getmetatable t...