如何为正在初始化的表创建索引?

以下是我想要的示例:

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

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

有没有办法让这个工作,或者我能使用的替代方案,不会增加太多代码(我希望它看起来漂亮,所以 fenv hack 不在考虑范围之内)。

如果有人想尝试 Lua,请使用 repl.it 进行快速脚本测试。

点赞
用户869951
用户869951

不,因为表格尚不存在,而且 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 是一个对象)。

2014-04-23 04:07:16