Lua и Love2D, ошибка таблицы в таблице

Почему это не работает? Я пытаюсь поместить все свои таблицы объектов в одну таблицу и использовать цикл forloop для перебора каждой из них и рисования. Он показывает сообщение об ошибке: "}" ожидается рядом с "=" в строке 5

function love.load()
solidstatic = {
ground = {x = 0,y = 160,width = 1000,height = 1000},
box = {x = 80,y = 100,width = 15,height = 15}
}

end


function love.draw()
for i,obj in ipairs(solidstatic) do
love.graphics.rectangle("fill",obj[x],obj[y],obj[width],obj[height])
end
end 

(править) решил проблему с ошибкой, я запускал неправильный файл .lua. Но все равно ничего не рисует на экране


person Paulo Schmidt    schedule 04.08.2016    source источник
comment
В таблице solidstatic нет ключей массива, поэтому ipairs не выполняет итерацию по чему-либо.   -  person Etan Reisner    schedule 04.08.2016


Ответы (2)


Две вещи. Во-первых, вы должны использовать пары вместо ipairs для перечисления ключей, которые не являются числами.

for i, v in pairs(table) do
    ...
end

Вы также должны индексировать переменные как строку.

t = {
    x = 1
}

t['x'] = 1
-- or
t.x = 1

Это потому, что выполнение этого без кавычек означало бы индексацию с глобальной переменной x, которой не существует.

person Adam    schedule 04.08.2016

Вам нужно использовать pairs вместо ipairs для перебора элементов в solidstatic, поскольку в этой таблице нет ключей массива.

person Paul Kulchenko    schedule 04.08.2016