lua中函数

来源:互联网 发布:心动网络校招面试 编辑:程序博客网 时间:2024/06/16 22:28

require() 不会重复加载。

  1. --require 函数的实现    
  2. function require(name)    
  3.     if not package.loaded[name] then    
  4.         local loader = findloader(name) //这一步演示在代码中以抽象函数findloader来表示    
  5.         if loader == nil then    
  6.             error("unable to load module" .. name)    
  7.         end    
  8.         package.loaded[name] = true    
  9.         local res = loader(name)    
  10.         if res ~= nil then    
  11.             package.loaded[name] = res    
  12.         end    
  13.     end    
  14.     return package.loaded[name]    
  15. end 


import()

同require功能,加载包更方便,可以用相对路径



module()的功能如下,默认不能方位上一级环境变量(_G),module(..., package.seeall)即可


local moduleName = ...
 
local M = {}    -- 局部的变量
_G[moduleName] = M     -- 将这个局部变量最终赋值给模块名
 
package.loaded[moduleName] = M
 
local _G = _G -- 保存了全局的环境变量
setfenv(1, M)