创建数组我一直在试图让我一个数组是这样的:的Lua通过代码
["Some String"] = true,
["Some other string"] = true
etc
使用代码。我不知道如何创建数组。我已经试过:
local tempArray
tempArray = {}
tempArray["Some String"] = true
但是,这并不工作,它最高审计机关tempArray =零。
我在做什么错?
创建数组我一直在试图让我一个数组是这样的:的Lua通过代码
["Some String"] = true,
["Some other string"] = true
etc
使用代码。我不知道如何创建数组。我已经试过:
local tempArray
tempArray = {}
tempArray["Some String"] = true
但是,这并不工作,它最高审计机关tempArray =零。
我在做什么错?
我总是创建的阵列中的Lua,如:
local myArray = {
["Hello"] = 'World',
["Testing"] = '123'
}
这应该工作,如果它不请确保您的Lua的安装是最新且可正常工作。
您发布的代码当然没有错。但是,在交互式环境中,它可能会出现奇怪的情况,具体取决于块是如何收集并交给解析器的。
正如您所写的,您声明本地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]: ?
>
我不知道有足够的了解魔兽世界权威说话,但很可能在一个脚本中声明当地人可能有知名度和值持续有趣的问题。如果他们使用大量的沙箱脚本,则脚本中的全局变量可能对其他脚本不可见。
您是否试图以交互方式运行? 'local'会将该变量隔离为输入的该块(行)。但在你的例子中,'tempArray'然后将在下一行被全局定义。 – BMitch