Цикл по матрице - PullRequest
       2

Цикл по матрице

0 голосов
/ 15 октября 2018

Я создаю простую матрицу, как показано ниже:

for x = 0, 50 do
  current_level[x] = {}

  for y = 0, 50 do
      current_level[x][y] = grabTile();
  end
end

После этого я пытаюсь прочитать ее, но каким-то образом x теперь является объектом, а не числом, тогда как y кажется совершенно нормальным!

Как я пытаюсь это прочитать:

for x,value in pairs(self.map) do
 if value == ni then print("none"); return;end;
 for y,object in pairs(value) do
   if object == ni then print("none"); return;end;
   object:render(x,y); -- Here x is an object
 end

end

Я новичок в работе с lua, поэтому я могу сделать что-то явно ужасно неправильное.Как бы я сделал эту работу?

То, что я получаю для x, выглядит примерно так: table: 0x07c8d530 Это значение остается неизменным на протяжении всей итерации

1 Ответ

0 голосов
/ 16 октября 2018

объект: render (x, y);- Здесь x - это объект

Эта строка использует синтаксис двоеточия.Это синтаксический сахар для вызова object.render(object,x,y).

Так что ваша функция render() должна иметь первый аргумент self, объявленный либо явно как function render(self, x, y), либо неявно с другим синтаксическим сахаром для определения: function object:render(x,y).

Несвязанный намек.Первый цикл будет быстрее / меньше, если преобразовать в:

for x = 0, 50 do
  local row = {}

  for y = 0, 50 do
      row[y] = grabTile();
  end
  current_level[x] = row
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...