S
Size: a a a
S
S
a = setmetatable({}, {__index = foo})==
a = {}==
b = {__index = foo}
setmetatable(a, b)
a = {}Посмотри внимательно. Все три образца кода в целом делают одно и то же.
setmetatable(a, {__index = foo})
S
A
tab1 = {}==
tab2 = {}
setmetatable(tab1, {__index = tab2})
setmetatable(таблица_куда_положить, {__искать_значения_в_доп_таблице = доп_таблица})
?S
setmetatable(a, {__index = foo})
скобочка^ скобочка^
Две скобочки вместе дают таблицу.A
S
A
setmetatable(a, {__index = foo})
скобочка^ скобочка^
Две скобочки вместе дают таблицу.S
A
S
A
A
function extended(Child, Parent)
setmetatable(Child,{__index = Parent})
end
{__index = Parent}
— это таблица с таблицей?S
A
S
S
Parent
можно добавить поле Parent.__index = Parent
, тогда его самого можно будет указывать начальником: инструкция для подчинённых появилась.A
Child = {a=10, b=20}-->
Parent = {c = 30}
function extended(Child, Parent)
setmetatable(Child,{__index = Parent})
end
extended(Child, Parent)
Child = {a=10, b=20, {__index = Parent = {c = 30}}?
S
setmetatable
не добавляет ключи в детей-подчинённых. Там хитрая схема, метатаблица не оставляет видимых следов.f
setmetatable
не добавляет ключи в детей-подчинённых. Там хитрая схема, метатаблица не оставляет видимых следов.