我为我的 C 语言软件添加了 lua 脚本支持,以便更轻松地扩展和添加新功能。
例如,我在文件夹中查找 .lua 文件。这些插件包含识别我的软件的功能,例如:
function GetName()
return "Youtube Search"
end
它也有“ worker 功能”,例如:
function Search(strTerm, SearchResult)
--SEACH YOUTUBE
SearchResult = MYRESULTS
end
这样,由于这个插件,我的软件现在可以在 youtube 上搜索。
但是现在我有一个问题,我找不到合适的解决方案。一些插件需要一个配置系统,例如在这个 Youtube 插件中它需要一个只返回 WebM 视频的属性。但是 liveLeak 插件不需要这个属性。
在我的应用程序中,它应该能够解析插件所需的内容(2 个整数和 1 个字符串),然后将其显示在列表中。
我怎样才能优雅地实现解决这些问题的解决方案?
最佳答案
getSupportedConfigItems()
和 setConfigItems(tbl)
等插件公开的一对函数(可选)怎么样?如果我正确理解了您的问题(我必须承认,我不理解“2 个整数和 1 个字符串”部分),YouTube 插件可能看起来像这样:
function getSupportedConfigItems()
return {
showWebMOnly = {
type = 'boolean',
description = 'Show only WebM videos',
default = true
}
}
end
function setConfigItems(tbl)
for key, value in pairs(tbl) do
if key == 'showWebMOnly' then
-- ...
end
end
end
通过这种方式,您的应用程序可以编写为支持显示一些众所周知的类型(由您定义,示例为 bool 值)的首选项。该应用程序会询问每个插件它可以支持哪些首选项,并显示这些选项。然后它会告诉插件选择了哪些选项,以及它们的值是什么。
关于c - 我如何为我的 Lua 扩展做一个配置系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246688/