Lua:获取表值本身

时间:2017-10-11 20:35:53

标签: lua scope lua-table

所以我尝试了一些我觉得应该很容易的事情,但我无法让它发挥作用......

基本上我要做的是:

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

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

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

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

但它让我错误地认为" myTable" /" self"是零。

我觉得解决方案相当简单,但我自己也找不到它,谷歌也不是那么有用。

1 个答案:

答案 0 :(得分:3)

在一个语句中没有办法做到这一点(至少在没有调用任何函数或使用元表的情况下)。那是因为在foo = bar之类的语句中,在评估条形表达式之前,不会分配foo变量。

在第二个示例中,myTable变量在结束大括号之前未分配,因此myTable中的myTable.a + 1被视为未分配的全局变量,并获取值nil。第三个示例中的self是相同的,只是您以后不尝试为其指定任何内容。 (在Lua中,self只是使用冒号语法编写的特殊内部函数。)

要做你想做的事,你必须做这样的事情:

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

或者这个:

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