Lua 的 require 函数

Lua 的 require 函数是模块加载系统的核心功能,用于动态加载和执行 Lua 模块。它的工作机制和特点如下:

  1. 基本功能
  • require 首先会在 package.loaded 表中检查模块是否已加载
  • 如果未加载,则会依次在 package.path(用于.lua文件)和package.cpath(用于C库)指定的路径中搜索模块
  • 找到模块后会执行模块代码,并将返回值存储在 package.loaded 表中
  1. 搜索路径
  • package.path 默认包含以下路径:
    • 当前目录(./?.lua)
    • Lua库目录(/usr/local/share/lua/5.3/?.lua)
    • 用户目录(~/.luarocks/share/lua/5.3/?.lua)
  • 路径中的问号会被替换为模块名
  • 可以通过修改 package.path 来添加自定义搜索路径
  1. 缓存机制
  1. 典型用法示例
lua 复制代码
-- 加载标准库模块
local math = require("math")

-- 加载自定义模块
local mymodule = require("mymodule")

-- 加载子模块
local utils = require("mylib.utils")
  1. 高级特性
  • 可以自定义 package.searchers 表来扩展模块搜索逻辑
  • 支持加载二进制扩展模块(.so/.dll文件)
  • 模块可以返回一个表或函数作为接口
  1. 注意事项
  • 模块名中的点会被转换为路径分隔符(如 "a.b" 会查找 a/b.lua)
  • 循环依赖需要特殊处理
  • 在沙盒环境中可能需要限制 require 的功能

require 的这种设计使得 Lua 的模块系统既灵活又高效,是 Lua 生态的重要组成部分。

相关推荐
源代码•宸17 小时前
Golang面试题库(Interface、GMP)
开发语言·经验分享·后端·面试·golang·gmp·调度过程
●VON17 小时前
React Native for OpenHarmony:Image 组件的加载、渲染与性能优化全解析
笔记·学习·react native·react.js·性能优化·openharmony
西京刀客17 小时前
Go 语言中的 toolchain 指令-toolchain go1.23.6的作用和目的
开发语言·后端·golang·toolchain
@ chen17 小时前
Spring MVC 核心知识
java·spring·mvc
weisian15117 小时前
JVM--2-打破刻板印象:在Java中创建一个对象,一定是分配到堆内存吗?
java·开发语言·jvm·tlab·逃逸分析·标量替换
是店小二呀17 小时前
Git 深度学习笔记:从初始化到核心操作机制解析
笔记·git
onkel in blog17 小时前
【Java】Gradle 多模块项目实战:Spring Boot 微服务搭建全流程
java·spring boot·微服务·gradle
心语星光17 小时前
用python语言的pyautogui库实现伪批量将xdf文件打印为pdf文件
开发语言·python·pdf·自动化
想要一只奶牛猫17 小时前
Spring IOC&DI(上)
java·后端·spring
cyforkk17 小时前
10、Java 基础硬核复习:多线程(并发核心)的核心逻辑与面试考点
java·开发语言·面试