与 lua table 索引有点冲突

Fighting a bit with lua table indexing

我是 Lua 的新手,想了解以下语法:

init_state_global = some_integer
rnn_state = {[0] = init_state_global}

我的 Pythonic 解释是第一个元素的索引为 0,并且该元素的值等于变量 init_state_global。

然而,当我这样做时

print(rnn_state[0])

我明白了

>> nil

谁能帮我解释一下:

rnn_state = {[0] = init_state_global}

在 Lua 中,您在表达式 set(=) 之前和数组名称之后执行此操作。此外,Lua 使用基于 1 的索引

init_state_global = some_integer
rnn_state = {}
rnn_state[1] = init_state_global;

也许你忘了声明一个变量:

init_state_global = 5
rnn_state = {[0] = init_state_global}
print(rnn_state[0])

事实证明这比我想象的要容易。

即使 lua 从 1 开始索引,您也可以将索引临时设置为零。

所以 rnn_state = {[0] = init_state_global}

就是这个意思,

rnn_state[0] = init_state_global

不过,我上面说了

print(rnn_state[0]) was equal to
>> nil

那是因为我忘了声明变量(在我的代码中,而不是在初始线程中)

init_state_global = some_integer

:(

所以如果你正确声明了变量,下面的语句

print(rnn_state[0])

将return

>> some_integer

如果您之前声明过

init_state_global = some_integer

另一件事(对于我们这些习惯 python 列表的人来说可能并不明显)是

rnn_state = {}
rnn_state[0] = 4

相同
rnn_state = {[0] = 4}