Lua создать массив по коду - PullRequest
0 голосов
/ 22 сентября 2011

Я пытался получить массив вроде этого:

["Some String"] = true,
["Some other string"] = true
etc

с помощью кода.

У меня нет ни малейшего понятия о том, как создать массив.я пробовал:

local tempArray
tempArray = {}
tempArray["Some String"] = true

но это не работает, это говорит tempArray = ноль.

Что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 22 сентября 2011

В опубликованном вами коде нет ничего плохого.

1 голос
/ 22 сентября 2011

Я всегда создавал массивы в Lua, например:

local myArray = {
  ["Hello"]    = 'World',
  ["Testing"]  = '123'
}

Это должно работать, если оно не гарантирует, что ваша установка Lua обновлена ​​и работает правильно.

0 голосов
/ 23 сентября 2011

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

Как написано, вы объявляете локальный tempArray и затем, очевидно, используете его.Если эти строки введены в интерактивном приглашении Lua, которое принимает каждую строку как отдельный чанк, то локальное, созданное в первой строке, будет создано и отброшено.Вторая строка создаст глобальную переменную с тем же именем, а третья строка будет использовать глобальную переменную для установки поля.Вы можете продемонстрировать это следующим образом:

C:\Users\Ross>lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> local tempArray
> tempArray = {}
> tempArray["Some String"] = true
>
> table.foreach(tempArray,print)
Some String     true
>
> print(type(_G.tempArray))
table
>

Здесь я продемонстрировал, что таблица tempArray существует и имеет ровно один ключ со значением true.Напечатав тип _G.tempArray, я продемонстрировал, что была создана глобальная переменная.

Используя пару do ... end, чтобы интерактивное приглашение обрабатывало весь блок какодин кусок, мы оба создаем и используем локальную переменную.К сожалению, после end фрагмента, локальный теперь выходит из области видимости и больше не виден.

C:\Users\Ross>lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> do
>> local tempArray
>> tempArray = {}
>> tempArray["Some String"] = true
>> end
> print(type(_G.tempArray))
nil
> table.foreach(tempArray,print)
stdin:1: bad argument #1 to 'foreach' (table expected, got nil)
stack traceback:
        [C]: in function 'foreach'
        stdin:1: in main chunk
        [C]: ?
>

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

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