复制代码 代码如下:
--example:
local temp_table ={
10,
1,
Index1 = "hello",
Index2 = "world",
Index3 = "lua",
Index4 = "language",
lang = "lua language",
}
temp_table.__add = function(a, b) return 3 end
for _, Value in pairs(temp_table) do
print(Value)
end
local temp_metable_table = {
Index1 = "temp_new_metable_Index1",
Index2 = "temp_new_metable_Index2",
Key = "temp_new_metable_Key_end",
}
for _, Metable_Value in pairs(temp_metable_table) do
print(Metable_Value)
end
--只能访问temp_table的方法
--setmetatable(temp_metable_table, temp_table) --如果setmetable 为这种方式的话,那么我不能够对metable进行原子操作
--print(temp_metable_table + temp_table)
--如果是这种方式的话,我们只能访问它的原子,也就是它的数据成员
--[[setmetatable(temp_metable_table, {__index = temp_table} )
print(temp_metable_table[1])
print(temp_metable_table["lang"])--]]
--如果是__newindex的话,我们可以访问原table,找到相关的key,除此之外,你还可以自己给原table添加数据成员
setmetatable(temp_metable_table, {__newindex = temp_table} )
temp_metable_table[5] = 100
print(temp_metable_table[5])
print(temp_table[5])
复制代码 代码如下:
Window = {}
Window.prototype = {x = 0 ,y = 0 ,width = 100 ,height = 100,}
Window.mt = {}
function Window.new(o)
setmetatable(o ,Window.mt)
print(getmetatable(o))
print(getmetatable(Window.mt))
return o
end
Window.mt.__index = function (t ,key) //由于__index 给赋予了funcion,一个匿名函数
-- body
return 1000
end
w = Window.new({x = 10 ,y = 20})
print(w.a) //在这里虽然没有a这个成员,但是会默认a为__index所绑定的function返回值作为a的值
复制代码 代码如下:
Window = {}
Window.mt = {}
function Window.new(o)
setmetatable(o ,Window.mt)
return o
end
Window.mt.__index = function (t ,key)
return 1000
end
Window.mt.__newindex = function (table ,key ,value)
if key == "wangbin" then
rawset(table ,"wangbin" ,"yes,i am")
end
end
w = Window.new{x = 10 ,y = 20}
w.wangbin = "55"
print(w.wangbin)
总结:
如果在元table中去找相应的操作,例如__index,__newindex等,如果有则直接访问,如果没有就新添加进元table中
更新日志
- MartinNeu-JohannSebastianBachTriosonatenfrOrgelBWV525-530(2024)[24-44.1]wav
- PC模拟器版《血源》BOSS战演示:圣剑路德维希
- 《地狱即我们》最新实机:叙事、战斗与设计特点
- UP主把《黑神话:悟空》做成了像素游戏!还能用手机玩!
- 梅艳芳.1998-床前明月光【BMG】【WAV+CUE】
- 王识贤.1998-最痛的痛(国)【滚石】【FLAC分轨】
- 谭咏麟.1988-心手相连【宝丽金】【WAV+CUE】
- NewViennaOctetViennaWindSoloists-TheDeccaRecordings(2024)18CD[24-48][FLAC]--10
- 骅梓1996-不要匆忙(正东版)[红星生产社][WAV+CUE]
- 黑月追风1993-黑月追风[波丽佳音][WAV+CUE]
- 《直到黎明:复刻版》PS4&5图形对比:变化有点大
- 《寂静岭2:重制版》发售宣传片 三角头压迫感再临
- B站UP主《黑神话》沙地上笔练书法:撰写“悟空”
- 焦淼《“永恒的旋律”国家大剧院合唱团经典作品音乐会》[320K/MP3][101.62MB]
- 焦淼《“永恒的旋律”国家大剧院合唱团经典作品音乐会》[FLAC/分轨][252.67MB]