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 не добавляет ключи в детей-подчинённых. Там хитрая схема, метатаблица не оставляет видимых следов.