Как получить значений коренной таблицы?

Tema05

Известный
Автор темы
1,515
481
Версия MoonLoader
.026-beta
Вот например я функции SetTable передал таблицу 0x066dd108 (test.set) как можно из этой таблицы внутри функции достать коренную 0x066dd0a8 (test)
P.S. я знаю что эти так сказать номера таблиц (адреса памяти где они хранится) всегда разные, взял чисто для наглядности.
Lua:
local test = {
    set = {
        but = '123',
        gg = 'not'
    }
}

function SetTable(table)
    print(table) --0x066dd108
    --Как из таблице выше получить таблицу ниже?
    print(test) --0x066dd0a8
  
end

SetTable(test.set)
 

ImPasha

Software Developer & System Administrator
Друг
1,787
2,148
Таблица и подтаблицы никак с друг другом не связаны, кратко говоря, таблица set не знает о существовании таблицы test. Если удалить таблицу test заранее создав прямую ссылку на таблицу set внутри таблицы test, то таблица set продолжит своё существование.

Lua:
local table = {
    table_inside = {
        value = 50
    }
}
local table_link = table.table_inside

print(table_link.value) -- 50
print(table.table_inside.value) -- 50

table_link.value = 10

print(table_link.value) -- 10
print(table.table_inside.value) -- 10

table = nil -- destroy root table

print("results:")

print("link: " .. table_link.value) -- link: 10
print("subtable: " .. table.table_inside.value) -- error

table_link.value = 5

print("link: " .. table_link.value) -- 5