Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 如何处理lua中未知的初始值设定项函数?_Parsing_Lua - Fatal编程技术网

Parsing 如何处理lua中未知的初始值设定项函数?

Parsing 如何处理lua中未知的初始值设定项函数?,parsing,lua,Parsing,Lua,我想加载用lua(eyeonScript)的变体编写的数据。但是,数据中充满了对非普通lua中的初始化函数的引用: Redden = BrightnessContrast { Inputs = { Red = Input { Value = 0, }, }, } 标准lua给出“尝试调用零值”或“意外符号”错误。有没有办法捕捉这些信息并将其传递给某种通用初始值设定项 我希望最终得到一个嵌套的表数据结构 谢谢 为全局表设置一

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

Redden = BrightnessContrast {
    Inputs = {
        Red = Input {
            Value = 0,
        },
    },
}
标准lua给出“尝试调用零值”或“意外符号”错误。有没有办法捕捉这些信息并将其传递给某种通用初始值设定项

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


谢谢

为全局表设置一个
\u索引
元方法。例如,使未定义的函数的行为类似于标识:

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

这里还有另一个技巧:将_调用设置为nil,但您需要在C中或使用调试库来完成。此技巧的优点是它只处理对未定义函数的调用:

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

谢谢这正是我所需要的。一个小的副作用是,任何输入错误现在都会变成函数,但因为我运行Lua只是为了解析这个结构,所以我不太担心这个问题。很好的技巧lhf@oofoe:无论如何,您可以创建一个自定义环境来执行配置文件(使用setfenv),这样它就不会破坏或污染您的正常名称空间。然后,您可以仅在该环境中定义元方法。