Как я могу определить эту переменную перед массивами? - PullRequest
2 голосов
/ 27 июня 2019

Я создаю сценарий LUA для своей игры с помощью программного обеспечения Logitech Gaming Software, но я борюсь с одной вещью.

Я просто хочу определить переменную "var" ПЕРЕД массивами.

У меня более 50 массивов, поэтому мне надоело прокручивать страницу каждый раз, когда я хочу изменить эту переменную ..

Как я могу это сделать?

Вот упрощенная версия моего скрипта.

Работает:

array1 = { "TRUE", 5, 4, 5, 5 }
array2 = { "FALSE", 6, 3, 8, 5 }
array3 = { "FALSE", 3, 2, 5, 3 }

var = array1

OutputLogMessage(var[1])

Не работает:

var = array1

array1 = { "TRUE", 5, 4, 5, 5 }
array2 = { "FALSE", 6, 3, 8, 5 }
array3 = { "FALSE", 3, 2, 5, 3 }

OutputLogMessage(var[1])

Ответы [ 2 ]

4 голосов
/ 27 июня 2019

Второй способ не работает, потому что array1 не существует в тот момент, когда вы копируете его в переменную var.

Если вы хотите сохранить код таким, какой он есть сейчас, т. Е. Позже создать переменные с произвольными именами, но заранее указать желаемую ссылку, вам придется разрешить присвоение после того, как вы создали все массивы. Это может пойти так:

var = "array1"

array1 = {blah-blah1}
array2 = {blah-blah2}
array2 = {blah-blah3}

-- this is where the var will be replaced with actual value
var = _G[var]
2 голосов
/ 27 июня 2019

Вы можете вложить свои массивы в другой массив.

var = 1

arrays = {
    { "TRUE", 5, 4, 5, 5 },    --array1
    { "FALSE", 6, 3, 8, 5 },   --array2
    { "FALSE", 3, 2, 5, 3 },   --array3
}

print(arrays[var][1]) -- do stuff with first item in arrays[1]

Это может немного очистить код, это также позволит вам свернуть определение arrays, в идеале, который имеет этоособенность, поэтому вам не нужно прокручивать их.


Кроме того, если вам нужен ключ в виде строки, вы можете определить arrays следующим образом:

var = "array1" -- must have the quotes

arrays = {
    array1 = { "TRUE", 5, 4, 5, 5 },
    array2 = { "FALSE", 6, 3, 8, 5 },
    array3 = { "FALSE", 3, 2, 5, 3 },
}

print(arrays[var][1]) -- do stuff with first item in arrays[array1]

Этот методсобирается создать таблицу в сопоставлении с другим методом с производит массив.Существует разница в эффективности в пользу первого метода, о котором следует помнить.

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