local temp_table ={
10,
1,
Index1 = "hello",
Index2 = "world",
Index3 = "lua",
Index4 = "language",
lang = "lua language",
}
local tem_t = {
test = 10;
}
tem_t.__index = function (t, k)
print("tem_t", t, k)
return rawget(tem_t, k)
end
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)
--如果是这种方式的话,我们只能访问它的原子,也就是它的数据成员
local tst ={
__index = function(t, k)
print("test0000000000000",t, k)
return temp_table[k]
end
--__newindex = temp_table
}
tst.__newindex = temp_table
setmetatable(temp_table, tem_t);
--setmetatable(temp_metable_table, tst )
print(temp_metable_table[1])
--print(temp_metable_table["lang"])
--如果是__newindex的话,我们可以访问原table,找到相关的key,除此之外,你还可以自己给原table添加数据成员
setmetatable(temp_metable_table, {__newindex = temp_table, __index = temp_table} )
--[[temp_metable_table[5] = 100
print(temp_metable_table[5])
print(temp_table[5])
print(temp_metable_table.test)
print(temp_table.test)--]]
print(temp_metable_table[1])
print(temp_metable_table.test)
10,
1,
Index1 = "hello",
Index2 = "world",
Index3 = "lua",
Index4 = "language",
lang = "lua language",
}
local tem_t = {
test = 10;
}
tem_t.__index = function (t, k)
print("tem_t", t, k)
return rawget(tem_t, k)
end
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)
--如果是这种方式的话,我们只能访问它的原子,也就是它的数据成员
local tst ={
__index = function(t, k)
print("test0000000000000",t, k)
return temp_table[k]
end
--__newindex = temp_table
}
tst.__newindex = temp_table
setmetatable(temp_table, tem_t);
--setmetatable(temp_metable_table, tst )
print(temp_metable_table[1])
--print(temp_metable_table["lang"])
--如果是__newindex的话,我们可以访问原table,找到相关的key,除此之外,你还可以自己给原table添加数据成员
setmetatable(temp_metable_table, {__newindex = temp_table, __index = temp_table} )
--[[temp_metable_table[5] = 100
print(temp_metable_table[5])
print(temp_table[5])
print(temp_metable_table.test)
print(temp_table.test)--]]
print(temp_metable_table[1])
print(temp_metable_table.test)