当前位置: 首页 > news >正文

无涯教程-Lua - Modules(模块)

模块就像可以使用 require 加载的库,并且具有包含Table的单个全局名称,该模块可以包含许多函数和变量。

Lua 模块

其中一些模块示例如下。

-- Assuming we have a module printFormatter
-- Also printFormatter has a funtion simpleFormat(arg)
-- Method 1
require "printFormatter"
printFormatter.simpleFormat("test")-- Method 2
local formatter=require "printFormatter"
formatter.simpleFormat("test")-- Method 3
require "printFormatter"
local formatterFunction=printFormatter.simpleFormat
formatterFunction("test")

让无涯教程考虑一个简单的示例,其中一个函数具有数学函数。将此模块称为mymath,文件名为mymath.lua。文件内容如下-

local mymath= {}function mymath.add(a,b)print(a+b)
endfunction mymath.sub(a,b)print(a-b)
endfunction mymath.mul(a,b)print(a*b)
endfunction mymath.div(a,b)print(a/b)
endreturn mymath	

现在,为了在另一个文件(如moduletutorial.lua)中访问此Lua模块,您需要使用以下代码段。

mymathmodule=require("mymath")
mymathmodule.add(10,20)
mymathmodule.sub(30,20)
mymathmodule.mul(10,20)
mymathmodule.div(30,20)

为了运行此代码,需要将两个Lua文件放置在同一目录中,或者可以将模块文件放置在包路径中。当运行上面的程序时,将得到以下输出。

30
10
200
1.5

旧方法实现

现在以较旧的方式重写相同的示例,该示例使用package.seeall实现类型。这在Lua 5.1和5.0版本中使用过。 mymath模块如下所示。

module("mymath", package.seeall)function mymath.add(a,b)print(a+b)
endfunction mymath.sub(a,b)print(a-b)
endfunction mymath.mul(a,b)print(a*b)
endfunction mymath.div(a,b)print(a/b)
end

下面显示了moduletutorial.lua中模块的用法。

require("mymath")
mymath.add(10,20)
mymath.sub(30,20)
mymath.mul(10,20)
mymath.div(30,20)

运行上面的命令时,将获得相同的输出。许多使用Lua进行编程的SDK(如Corona SDK)已弃用此方法。

Lua - Modules(模块) - 无涯教程网无涯教程网提供模块就像可以使用 require 加载的库,并且具有包含Table 的单个全局名称,该模块可以...https://www.learnfk.com/lua/lua-modules.html

http://www.lryc.cn/news/110414.html

相关文章:

  • url重定向
  • Linux 查看IP地址、子网掩码和网关的配置信息
  • token
  • 利用awk筛选给定时间范围内的日志
  • ORACLE字符集概念学习
  • 时间复杂度、空间复杂度实践练习(力扣OJ)
  • JMeter(二十四)、使用吞吐量控制器实现不同的用户操纵不同的业务
  • 8.1Jmeter5.1:Jmeter SSL
  • 7-7 找最小的字符串 (15 分)
  • Red Hat 安装MySQL 8.0与 Navicat
  • 17游刃有余:动手实现自己的RPC框架(三)
  • c语言——求n之内的素数和
  • 【M波段2D双树(希尔伯特)小波多分量图像去噪】基于定向M波段双树(希尔伯特)小波对多分量/彩色图像进行降噪研究(Matlab代码实现)
  • unity TextMeshPro 富文本
  • 【PyTorch】PyTorch、Cuda 的安装和使用
  • 1.初识typescript
  • iPhone 6透明屏是什么?原理、特点、优势
  • prometheus+grafana进行服务器资源监控
  • EventBus 开源库学习(三)
  • zjzcyList.stream().map(Pb_zjzcy::getZjid).collect(Collectors.toList()); 解释一下
  • 车载总线系列——J1939 二
  • 【C#学习笔记】引用类型(2)
  • 【Rust 基础篇】Rust类函数宏:代码生成的魔法
  • Spring-1-透彻理解Spring XML的Bean创建--IOC
  • 【JAVA】类和对象
  • jenkins准备
  • 【Rust】Rust学习
  • Linux 常用命令之配置环境变量 PATH
  • flask-----蓝图
  • 学习左耳听风栏目90天——第一天 1-90(学习左耳朵耗子的工匠精神,对技术的热爱)【洞悉技术的本质,享受科技的乐趣】