Доступ к элементам массива в lua не работает - PullRequest
1 голос
/ 23 сентября 2019

Когда у меня есть функция, которая возвращает несколько значений, я могу либо сохранить их в отдельных значениях, либо использовать оператор {} для получения массива.

Для доступа к значениям я могу либо определить переменную для хранения значения, либо получить доступ к массиву с помощью array[index].При использовании temp var для печати кода I значения:

function myTest()
  return "abc", "def", "geh";
end

a = {myTest()};
v = a[2];
print(v);

, что работает очень хорошо.Но при печати «возвращаемого значения из индексированного массива» из функции с

function myTest2()
  return "abc", "def", "geh";
end

print({myFunction2()}[2]);

ничего не печатается.

Может кто-нибудь объяснить, почему?

Ответы [ 2 ]

3 голосов
/ 25 сентября 2019

Просто не надо.Если вы хотите немедленно получить доступ к N -ому возвращаемому значению функции, используйте (select(N, ...)), который не создает новую таблицу (и, следовательно, создает меньше работы для GC)

function myTest2()
  return "abc", "def", "geh";
end

print( (select(2, myFunction2())) );

Обратите внимание, чтовключение списка значений в () усекает его до первого значения;это необходимо, потому что select(N, ...) возвращает N th и все последующие значения.(select(N, ...)) возвращает только N -ое значение.

3 голосов
/ 23 сентября 2019

Форма:

{myFunction2()}[2]

не является синтаксически допустимой.Я получаю неожиданную ошибку символа для этого.

Вы можете написать это как:

({myFunction2()})[2]

, и тогда он будет работать как ожидалось.

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