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

时间:2010-04-28 17:25:14

标签: parsing lua

我想加载用lua(eyeonScript)变体编写的数据。但是,数据中充满了对初始函数的引用,这些函数不是普通的lua:

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

标准lua给出“尝试调用零值”或“意外符号”错误。有没有办法捕获这些并将其传递给某种通用的初始化器?

我想结束嵌套的表数据结构。

谢谢!

2 个答案:

答案 0 :(得分:4)

为全局变量表设置__index元方法。例如,因此未定义的函数的行为类似于标识:

setmetatable(_G,{__index=function (n)
                           return function (x) return x end
                         end})

答案 1 :(得分:2)

这是另一个技巧:将__call设置为nil,但您需要在C中或使用调试库执行此操作。这个技巧的优点是它只处理对未定义函数的调用:

debug.setmetatable(nil,{__call=function (x,v) return v end})