Lua中的Python eval()

时间:2015-01-13 17:15:07

标签: python lua eval lua-table

我有以下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中我可以采用类似或不同的方式吗?

2 个答案:

答案 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的回答所表明的那样,对于你所追求的目标,有一种更为直接的方法。