如何处理Lua中的未知初始化函数?

我想加载一种变体的lua(eyeonScript)编写的数据。然而,该数据中夹杂着对于未在标准lua中的初始化函数的引用:

Redden = BrightnessContrast { Inputs = { Red = Input { Value = 0, }, }, }

标准的lua会给出“尝试调用空值”或“未预期的符号”错误。有没有办法捕捉并将其传递给某种通用初始化器?

我希望得到一个嵌套的表数据结构。

谢谢!

原文链接 https://stackoverflow.com/questions/2731738

点赞
stackoverflow用户107090
stackoverflow用户107090

为全局表设置一个__index元方法。例如,使未定义的函数表现为恒等功能:

setmetatable(_G, {
  __index = function (n)
              return function (x)
                       return x
                     end
            end
})
2010-04-28 17:37:10
stackoverflow用户107090
stackoverflow用户107090

这里又有一个技巧:通过在 C 语言中或使用 debug 库来设置 nil 的 __call 。这个技巧的优势在于它仅处理对未定义函数的调用:

debug.setmetatable(nil,{__call=function (x,v) return v end})
2010-04-29 13:31:29