1. require的伪代码
function require(modname)
if not package.loaded[modname] then
local loadfunc = package.preload[modname]
if loadfunc ~= nil then -- Case 1
package.loaded[modname] = true -- "true" is just to mark module as loaded
local module = loadfunc(modname);
if module ~= nil then
package.loaded[modname] = module -- replace "true" with actual module
end
else -- loadfunc is nil
local fname = string.gsub(modname, "%.", "/") -- replace "." with /; we get a file name
local loaded = false
for each item in package.path do
local luafile = string.gsub(item, "?