您如何索引正在初始化的表?

时间:2014-04-23 02:48:09

标签: dictionary lua initialization this

我想要的一个例子:

local X = {["Alpha"] = 5, ["Beta"] = this.Alpha+3}

print(X.Beta) --> error: [string "stdin"]:1: attempt to index global 'this' (a nil value)

有没有办法让这个工作,或者我可以使用的替代品没有太多的代码膨胀(我希望它看起来很漂亮,所以fenv hacks是不合适的)

如果有人想在lua上破解,repl.it是一个很好的测试网页,用于快速编写脚本

1 个答案:

答案 0 :(得分:3)

没有办法做到这一点,因为该表尚不存在,并且Lua中没有“self”的概念(除了通过表格方法的语法糖)。你必须分两步完成:

local X = {["Alpha"] = 5}
X["Beta"] = X.Alpha+3

请注意,如果您的密钥不是字符串,或者如果字符串的字符数不是[a-z][A-Z][0-9]_,则只需要方括号。

local X = {Alpha = 5}
X.Beta = X.Alpha+3

更新:

根据我在你的pastebin上看到的内容,你可能应该稍微改变一下:

local Alpha = 5
local X = {
    Alpha = Alpha,
    Beta = Alpha+3, 
    Gamma = someFunction(Alpha), 
    Eta = Alpha:method()
}

(显然Alpha没有方法,因为在示例中它是一个数字,但你得到了想法,只是想显示Alpha是否是一个对象)。