<h3 id="目录">目录</h3>
  1. require函数
  2. 模块

require函数

ruquire函数可以加载任意模块,然后创建和返回一个表.

1
2
3
4
5
6
7
8
9
local mod = require "mod"
mod.foo()

local m = require “mod”
local f1 = m.foo
f1()

local f2 = require “mod”.foo
f2()

require 函数在表package.loaded中检查模块是否已经被加载过。如果加载过就返回相应的值,这就避免的重复的加载。没有加载,就会通过loadfile来对其进行加载。如果没有lua文档,就回去加载c标准库,使用底层函数package.loadlib进行加载。

如果加载函数有返回值,那么函数require会返回合格值,将其保存在packag.loaded中,如果没有返回值,且package.loaded[@rep{moduname}]为空,函数require就假设该模块的返回值是true。如果不存在这种,补偿会造成重复加载。

要强制加载同一模块两次,可以先将模块从package.loaded中删除:package.loaded.modname = nil.

模块

在lua中,简单的使用模块的方式就是使用表将所有属性放到这个表中(可以封装成类),然后最后返回这个表。 如果不想返回的话,可以以选择给package.loaded[M] = M。赋值的方法。

            <hr style="visibility: hidden;">