Python Lua 中的 eval()

Python eval() in Lua

我有以下 Lua 代码:

ow = { {move, 4, 5, Down}, { }, ...}

...

if ow[n][1] == "move" then
    joypad.set({ ow[n][4] = true })

此代码returns错误。我想让它像我输入的那样工作:

joypad.set({ Down = true })

在 python 我会这样处理这种情况:

eval('joypad.set({ {0} = true })'.format(ow[n][4]))

在 Lua 中有类似或不同的方法吗?

你需要这样写:

joypad.set({ [ow[n][4]] = true })

注意“ow[n][4]”两边的括号。

...您可以省略括号:

joypad.set{ [ow[n][4]] = true }

规则是这样的:如果 table 键不是词法标识符或字符串,则需要将其放在括号内。

回答你的另一个问题,是的 Lua 确实有类似 eval 的东西——它叫做 loadstring:

local setjoy = ("joypad.set { %s = true }"):format(ow[n][4])
loadstring(setjoy)()

但正如 Niccolo 的回答所显示的那样,对于您所追求的,有一种更直接的方法。