我想要的一个例子:
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是一个很好的测试网页,用于快速编写脚本
答案 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是否是一个对象)。