Lua의 이해index 및newindex
--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)
요약:
만약 메타테이블에서 상응하는 조작을 찾는다면, 예를 들어index,__새 index 등, 있으면 직접 방문하고, 없으면 원탭에 새로 추가합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.