Подскажите почему при построении "башни" из таблиц (без явных ключей) в глубину, "срезать" таблицу на определённом уровне можно так: (не забываем про теорию - в луа переменные содержат ссылки на таблицы, а не копии таблиц!)
local t = {{{{{}}}}} -- 4 вложенных
local g = t
local tst = t[1][1][1]
print(t[1][1][1][1]) -- table:
t[1][1] = t[1][1][1]
print(t[1][1] == tst, t[1][1][1][1] ) -- true, nil срезалась и "хвост" подтянула!
-- А так нельзя
print( t[1][1][1][1] ) -- table:
local a = t[1][1]
local b = t[1][1][1]
a = b
print( t[1][1][1][1] ) -- table: хвост не подтянут!
print( t[1][1] == g[1][1], t[1][1]== tst) -- true, false
-- и срез не произошёл! Проверим ещ переменные:
print( a == g[1][1], b == g[1][1], a==b) -- false, false, true
print(a == g[1][1][1], b == g[1][1[1]]) -- true, true
print(a == t[1][1][1], b == t[1][1[1]]) -- true, true
print(t==g) -- true
Как можно программно реализовать правильный срез таблицы из "башни", если вложенную таблицу на определённом уровне я получаю циклом:
local pred = t
while (pred) do
pred = pred[1]
if pred == t[1][1] then
pred = pred[1] -- не работает так. см 2 пример
end
end