我有以下Lua代码:
ow = { {move, 4, 5, Down}, { }, ...}
...
if ow[n][1] == "move" then
joypad.set({ ow[n][4] = true })
此代码返回错误。我希望它能像我输入一样工作:
joypad.set({ Down = true })
在python中我会处理这种情况,如:
eval('joypad.set({ {0} = true })'.format(ow[n][4]))
在Lua中我可以采用类似或不同的方式吗?
答案 0 :(得分:1)
你需要这样写:
joypad.set({ [ow[n][4]] = true })
请注意" ow[n][4]
"。
...你可以省略括号:
joypad.set{ [ow[n][4]] = true }
规则如下:如果表键不是词汇标识符或字符串,则需要将其放在括号内。
答案 1 :(得分:1)
要回答你的另一个问题,是的,Lua确实有eval
之类的东西 - 它被称为loadstring
:
local setjoy = ("joypad.set { %s = true }"):format(ow[n][4])
loadstring(setjoy)()
但正如Niccolo的回答所表明的那样,对于你所追求的目标,有一种更为直接的方法。