В прошлом я обнаружил, что использую таблицу как индекс и значение таблицы, когда заказ не имеет значения. Поскольку каждая таблица возвращает уникальное значение, которое они сохраняют для использования в качестве индекса , и с этим я уже получил всю информацию, которую я хочу использовать , использовать позже в программе. Теперь я не видел никакого подобного кода lua и не использовал его в не-тестовой программе. Поэтому я беспокоюсь, что при использовании этого метода у меня могут возникнуть непредвиденные/неожиданные проблемы.Потенциальные проблемы с сохранением второй таблицы двумерных массивов в индексе
пример:
a = {1,2,3,4,5} --some testing values
b = {2,nil,4,nil,1}
c = {3,nil,nil,nil,2}
d = {4,nil,1,nil,3}
e = {5,1,2,3,4}
tab = {a,b,c,d,e}
t = {}
for i, v in pairs(tab) do
t[v] = 0
end
for iv in pairs(t) do --is almost every time outputting it in a different order
print(iv[1],iv[2],iv[3],iv[4],iv[5]) --could be a list of data where you have to go through all of it anyway
end
io.read()
Теперь я могу хранить некоторую дополнительную информацию, в т [v], но если у меня нет любого есть там, возможно, некоторые Lua типа, который меньше?
Edit:
ли это хорошо сочетаются с использованием слабых столов?
Примечание:
Стандартный 2d таблица: таблица [key1] = таблица
стол [key1] [key2] < - содержит StuFF
эту версию: таблица [таблица] = ничего, кроме ноль < - не доступен по таблице [key1] [key2]
key1 [key2] < - содержит S tuff
Я не понимаю ваше последнее предложение. – lhf
@lhf t [v], который я инициализирую как 0, нужен только потому, что nil будет означать, что таблица не существует. Поэтому использование значения, которое использует как можно меньший объем памяти, сэкономит немало, если это станет большим. – CHlM3RA
0 занимает как можно меньше; так делает 'false'. – lhf