Dictionary 如何为正在初始化的表编制索引?

Dictionary 如何为正在初始化的表编制索引?,dictionary,lua,initialization,this,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黑客是不可能的) 如果有人想尝试lua,repl.it是一个很好的快速脚本测试

我想要的一个例子:

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

print(X.Beta) --> error: [string "stdin"]:1: attempt to index global 'this' (a nil value)
有没有一种方法可以让它工作,或者我可以使用一种替代品,而不需要太多的代码膨胀(我希望它看起来像样,所以fenv黑客是不可能的)


如果有人想尝试lua,repl.it是一个很好的快速脚本测试网页

不,没有办法做到这一点,因为表还不存在,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
更新:

根据我在你的粘贴箱上看到的情况,你可能应该稍微改变一下:

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

(显然Alpha没有方法,因为在本例中它是一个数字,但您知道了,只是想显示Alpha是否是一个对象)

有什么特别的原因不能在另一行上设置Beta吗?是的,这是我的特定用例:使用一个表比使用两行更有条理,这会使表本身过时。约翰,请在你的问题中添加代码,这会对答案产生影响,还有一些组织(比如我的雇主)阻止访问pastebin和其他共享站点(我在家看到代码,但无法从这里访问)。此外,帖子应该尽可能独立。为了备选方案的完整性:
localalpha=5 local X={[“alpha”]=alpha,[“Beta”]=alpha+3}
@TomBlodget确实,谢谢。根据我发布后看到的pastebin内容,这个变量与OP可能应该使用的更接近。