Lua中使用模块的一些基础知识(lua示例)干货满满

随心笔谈1年前 (2023)发布 admin
118 0



–两个横线开始单行的注释,–[[加上两个[和]表示多行的注释–]]。

复制代码 代码如下:

— 假设文件mod.lua的内容是:

local M={}

local function sayMyName()

  print(‘Hrunkner’)

end

function M.sayHello()

  print(‘Why hello there’)

  sayMyName()

end

return M

复制代码 代码如下:

— 另一个文件也可以使用mod.lua的函数:

local mod=require(‘mod’)  — 运行文件mod.lua.

— require是包含模块的标准做法。

— require等价于:     (针对没有被缓存的情况;参加后面的内容)

local mod=(function ()

end)()

— mod.lua就好像一个函数体,所以mod.lua的局部变量对外是不可见的。

复制代码 代码如下:

— 下面的代码是工作的,因为在mod.lua中mod=M:

mod.sayHello()  — Says hello to Hrunkner.

复制代码 代码如下:

— 这是错误的;sayMyName只在mod.lua中存在:

mod.sayMyName()  — 错误

复制代码 代码如下:

— require返回的值会被缓存,所以一个文件只会被运行一次,

— 即使它被require了多次。

— 假设mod2.lua包含代码”print(‘Hi!’)”。

local a=require(‘mod2’)  — 打印Hi!

local b=require(‘mod2’)  — 不再打印; a=b.

— dofile与require类似,只是不做缓存:

dofile(‘mod2’)  –> Hi!

dofile(‘mod2’)  –> Hi! (再次运行,与require不同)

复制代码 代码如下:

— loadfile加载一个lua文件,但是并不允许它。

f=loadfile(‘mod2’)  — Calling f() runs mod2.lua.

复制代码 代码如下:

— loadstring是loadfile的字符串版本。

g=loadstring(‘print(343)’)  –返回一个函数。

g()  — 打印343; 在此之前什么也不打印。

您可能感兴趣的文章:Lua教程(十一):模块与包详解Lua模块与包学习笔记Lua中的模块(module)和包(package)详解Lua的函数环境、包实例讲解Lua调用自定义C模块使用Lua编写Nginx服务器的认证模块的方法在Lua中使用模块的基础教程Lua极简入门指南(六):模块Lua模块和模块载入浅析Lua中的模块与module函数详解解析Lua中的全局环境、包、模块组织结构

© 版权声明

相关文章