【问题标题】:Python eval() in LuaLua 中的 Python eval()
【发布时间】:2015-03-11 17:44:57
【问题描述】:

我有以下 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 中以类似或不同的方式执行此操作吗?

【问题讨论】:

  • 我不确定您是否应该在 Python 中那样处理它...
  • 您的 Python 代码无效,eval() 将失败(因为 Python 将无法执行 Lua)。在任何情况下你都不应该使用eval(),我相信在 Python 中有更好的方法来处理它。
  • 我假设{move, 4, 5, Down} 是指{"move", 4, 5, "Down"}。您可能需要编辑您的问题以解决此问题。

标签: python lua eval lua-table


【解决方案1】:

你需要这样写:

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

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

...你可以省略括号:

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

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

【讨论】:

    【解决方案2】:

    要回答您的其他问题,是的,Lua 确实有类似 eval 的东西——它被称为 loadstring

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2011-01-28
      • 1970-01-01
      • 2020-07-24
      • 2017-11-24
      • 1970-01-01
      • 2018-05-26
      相关资源
      最近更新 更多