Передача 2d массива для работы в Lua - PullRequest
2 голосов
/ 11 октября 2009

Можно ли передать 2d массив функции в качестве параметра? Я инициализировал массив следующим образом:

tab={}
for i=1, 10 do
    tab[i]={}
    for z=1, 10 do
        tab[i][z]= 0
    end
end

и у меня есть такая функция:

function foo(data)
    ...
    x = data[i][z] -- here i got error
    ...
end

выдал сообщение об ошибке attempt to index field '?' (a nil value)

Все переменные объявлены и инициализированы.

Ответы [ 3 ]

4 голосов
/ 11 октября 2009

Ваш код должен работать, если он правильно инициализирован .

Например, приведенный ниже пример кода выдаст 3:

function foo(data)
  local i, z = 1, 2
  print(data[i][z])
end

local tab={}
for i=1, 10 do
  tab[i]={}
  for z=1, 10 do
    tab[i][z]= i + z
  end
end

foo(tab)
1 голос
/ 12 октября 2009

Может быть, вы можете поделиться остальным кодом? Следующее выполняется без ошибок:

tab={}
for i=1, 10 do
    tab[i]={}
    for z=1, 10 do
        tab[i][z]= 0
    end
end

function foo(data)
    print(data[3][2])
end

foo(tab)
0 голосов
/ 13 октября 2009

Сообщение об ошибке при попытке индексировать поле '?' (нулевое значение)

Я получил такие ошибки при изменении метатаблицы некоторой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...