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 的回答所显示的那样,对于您所追求的,有一种更直接的方法。
我有以下 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 的回答所显示的那样,对于您所追求的,有一种更直接的方法。