我正在为一个应用程序实现一个带Lua脚本的插件系统.基本上,它将允许用户通过在Lua中定义一个或多个函数来扩展功能.将调用插件函数以响应应用程序事件.
在Lua中是否有一些可以作为模型的良好开源插件框架?
特别是我想知道将参数传递给插件并接收返回值的最佳方法是什么,这种方式既灵活又易于插件编写者使用.
只是为了澄清,我从Lua脚本编程的角度来看,我对API的设计很感兴趣,而不是从托管应用程序的角度来看.
任何其他与Lua插件系统设计相关的建议或最佳实践将不胜感激.
Lua 的一流函数使这种事情变得如此简单,我想你不会发现太多框架的方式。请记住,Lua 的口号是提供最小的机制,让个体程序员为自己制定策略。
你的问题很笼统,但我为你的 API 推荐如下:
单个插件应该由单个 Lua 表表示(就像 Lua 模块由单个表表示一样)。
表的字段应包含表的操作或回调。
共享状态不应该存储在表中;它应该存储在创建表的代码的局部变量中,例如,
local initialized = false
return {
init = function(self, t) ... ; initialized = true end,
something_else = function (self, t)
if not initialized then error(...) end
...
end,
...
}
Run Code Online (Sandbox Code Playgroud)您还会看到我建议所有插件操作使用相同的接口:
传递和返回单个表而不是位置结果的原因是,它将帮助您随着接口的发展保持代码兼容。
总之,积极使用表和一流函数,并保护插件的私有状态。
| 归档时间: |
|
| 查看次数: |
1641 次 |
| 最近记录: |