ну в ней же есть метаметоды, типа __index и прочее? Можно как-нибудь их получить, чтобы понять, что было преопределено?
1. Таплы в луа есть. Это скрытый тип, но он вполне себе существует, например при множественном присваивании, мы на самом деле стыкуем таплы:
function foo(a, b, ...)
local c, d, e = ...
return c, d, e, ...
end
print(foo(1, 2, 3, 4, 5, 6, 7))
--> 3, 4, 5, 3, 4, 5, 6, 7
Или a, b = b, a - на самом деле стыковка двух таплов.
И для работы с этими таплами есть специальная функция select (выбор элементов тапла или подсчёт их количества).
Но мы не об этом.
2. Таблица - это сочетание массива и хеша в произвольной пропорции, хоть одновременно. И там есть куча метаметодов, чтобы таблица могла вести себя как объект, или как ещё что-нибудь хитрое.
Я некоторое время назад писал хабро-статью ровно по метаметодам.
https://habr.com/post/346892/
3. На тему тарантула - не в курсе, они могли вводить свои произвольные типы данных. Благо можно хоть из сишки выгрузить в луа кучу новых классов-объектов с произвольными методами, как раз за счёт метатаблиц.