Lua:在表里面获取表值

所以我正在尝试一些我认为应该很容易的事情,但我就是无法让它起作用...

基本上我想做的是:

myTable = {
  a = 1,
  b = a + 1
}

这不起作用,我得到的错误是"a"是nil。这是合理的。 我已经尝试过的是

myTable = {
  a = 1,
  b = myTable.a + 1
}

myTable = {
  a = 1,
  b = self.a + 1
}

但它给我报错说"myTable"/"self"是nil。

我有种感觉,解决方案很简单,但我无法自己找到它,谷歌也没有什么帮助。

点赞
用户5287638
用户5287638

以下是 Markdown 格式的中文翻译:

在一条语句中无法完成此操作(至少不使用任何函数或元表)。这是因为在像 foo = bar 这样的语句中,直到 bar 表达式被评估之前,foo 变量才会被赋值。

在您的第二个示例中,myTable 变量直到结束大括号才会被赋值,所以 myTable.a + 1 中的 myTable 被视为未分配的全局变量,并且得到了一个值 nil。在您的第三个示例中,self 的情况相同,只是您没有尝试稍后将任何东西赋值给它。(在 Lua 中,使用冒号语法编写的函数内部才有特殊含义的 self 变量。)

要实现您想要的功能,您必须执行类似于以下操作:

myTable = {
    a = 1
}
myTable.b = myTable.a + 1

或者这个:

local a = 1
myTable = {
    a = a,
    b = a + 1
}
2017-10-11 23:29:08