lua 元表中 newindex元方法

2021-08-19 18:22:15 字數 1088 閱讀 5740

--[[元方法__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**********=

以上可以簡寫為:

local newindextable = {}

local tablea = setmetatable( , )

tablea.id = "change id "

tablea.age = "change age"

print(tablea.id, newindextable.id)

print(tablea.age, newindextable.age)

rawset/rawget:繞過metatable的行為約束,強制對原始表進行一次原始的操作;一次原始的操作其實並不會加速**執行的速度,效率一樣。

格式: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...