Rei*_*nte 1 lua module packages wildcard require
我想一次需要几个 Lua 模块,类似于 Java ( import java.awt.*) 中的星号标志。这是我在子目录中组织模块的结构:
<myapp>
-- calculations
-- calc1
-- calc2
-- calc3
-- helper
-- help1
-- help2
-- print
--graphprinter
--matrixprinter
Run Code Online (Sandbox Code Playgroud)
我的客户需要一个子路径的每个模块:
local graphprinter = require("myapp.helper.print.graphprinter")
local matrixprinter = require("myapp.helper.print.matrixprinter")
Run Code Online (Sandbox Code Playgroud)
我更喜欢自动多需求,它从模块路径派生本地表名,并且一次需要整个子路径。这可能是格式:require("myapp.helper.print.*"). 应该为子目录的每个模块自动创建本地表名,这样就没有任何区别,因为我会逐个模块地要求它们。
为什么不init.lua为需要所有其他库的每个文件夹编写一个文件?
例如,在计算中,您编写的文件包含
return {
calc1 = require "calc1";
calc2 = require "calc2";
calc3 = require "calc3";
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以写了calculations = require "calculations",它会自动加载calculations.calc<1-3>
这可以为整个目录结构完成,并且require "helper"可以调用require "help1"它依次调用require "print",最后你可以在helper.help1.print.<function>
其工作原理的简短说明:当您运行require "library"lua 时,将尝试包含一个名为library.lua的文件或init.lua位于library目录中的文件。这也是你为什么做require "dir.lib"而不是require "dir/lib";的原因。因为,如果做得对,当您只是require "dir"返回一个包含该字段的表时,lib您可以将其作为dir.lib.<function>.
| 归档时间: |
|
| 查看次数: |
1479 次 |
| 最近记录: |