Python中的eval()在Lua中的实现

我有以下 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 中,我能以类似或不同的方式完成吗?

点赞
用户1560821
用户1560821

你需要像这样编写:

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

请注意,“ow [n] [4]”周围的括号。

... 你可以省略括号:

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

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

2015-01-13 17:41:22
用户234175
用户234175

回答你的另一个问题,是的 Lua 有类似 eval 的东西——它被称为 loadstring

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

但是,正如 Niccolo 的答案所展示的,对于你想要的,还有一个更直接的方法。

2015-01-13 23:06:08