之前的方式通过addon.拿到的table可能为空,因为此时文件可能并未加载
现在的方式是通过将表的引用先行创建并挂载到addon上,以便后续加载的文件实现成员
(当然所有的接口都不应该立即调用,而应该由入口文件的统一调用,避免出现先后顺序问题)
__modular.lua
| local addonName, addon = ... |
| |
| |
| |
| |
| |
| |
| local function createOrGetTable(libName) |
| local key = addonName .. "_" .. libName |
| if addon[key] == nil then |
| addon[key] = {} |
| end |
| return addon[key] |
| end |
| |
| |
| addon.import = function(libName) |
| return createOrGetTable(libName) |
| end |
| |
| addon.export = function(libName) |
| return createOrGetTable(libName) |
| end |
| |
Lib1.lua
| local addonName, addon = ... |
| |
| |
| local Lib2 = addon.import("Lib2") |
| |
| |
| |
| |
| local Lib1 = addon.export("Lib1") |
| |
| function Lib1:Fn1() |
| Lib2.Fn2() |
| end |
| |
| |
| print("Lib1 加载完成 Lib2是",Lib2) |
Lib2.lua
| local addonName, addon = ... |
| |
| |
| |
| local Lib2 = addon.export("Lib2") |
| |
| function Lib2:Fn2() |
| print("来自 Lib2 的 Fn2") |
| end |
| |
| print("Lib2 加载完成 Lib2是", Lib2) |
| |
Main.lua
| local addonName, addon = ... |
| |
| |
| local Lib1 = addon.import("Lib1") |
| Lib1:Fn1() |
TrykleTest.toc
| # |
| |
| __modular.lua |
| |
| Lib1.lua |
| Lib2.lua |
| |
| Main.lua |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-08-31 暴力完全卸载3dmax(以及桌子全家产品)
2019-08-31 MaxScript 模拟Python 的装饰器
2019-08-31 MaxScript 冷门知识点