我想加载用lua(eyeonScript)变体编写的数据。但是,数据中充满了对初始函数的引用,这些函数不是普通的lua:
Redden = BrightnessContrast {
Inputs = {
Red = Input {
Value = 0,
},
},
}
标准lua给出“尝试调用零值”或“意外符号”错误。有没有办法捕获这些并将其传递给某种通用的初始化器?
我想结束嵌套的表数据结构。
谢谢!
答案 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})