Lua语法介绍(10)_跨文件调用

Lua5.1里的用法
目前模块使用Lua版本是5.1,由于模拟器的版本为5.3,这部分代码语法并不相同,所以这里不提供代码测试功能

在编写代码时,随着逻辑逐渐复杂,我们的代码量也会变大。虽然有函数可以把一部分代码逻辑封装起来,但是所有代码都放到一个文件里,显然也不是个好办法。

所以我们需要将一些代码放到不同文件中,通过文件来区分这些代码的功能。

比如我们有下面这个函数:

—函数功能:
– 生成从1-max的table
– @输入值:table的最大值
– @返回: table结果
– @例子: local list = getNumberList(10)
function getNumberList(max)
local t = {}
for i=1,max do
table.insert(t,i)
end
return t
end
我们新建一个文件叫tools.lua,把这个函数放进去,现在,整个文件如下面这样:
tools.lua

–使这个代码在哪个文件里都能被调用
module(…, package.seeall)

—函数功能:
– 生成从1-max的table
– @输入值:table的最大值
– @返回: table结果
– @例子: local list = getNumberList(10)
function getNumberList(max)
local t = {}
for i=1,max do
table.insert(t,i)
end
return t
end
现在,我们封装的这个函数就能在其他文件里被调用了,具体代码如下:

–引用tools.lua文件,并加载
require"tools"

local list = tools.getNumberList(12)
当调用了require接口后,Lua虚拟机会自动加载你调用的文件,执行文件的内容,并返回一个以文件名为变量名的table,该table内包含了那个文件里所有非local的变量和函数。
为了更好地理解这段话,我们可以看下面两个文件,其中run.lua是被运行的那个入口文件
test.lua

–使这个代码在哪个文件里都能被调用
module(…, package.seeall)

a = 1
local b = 2
–local变量无法被外部调用
–但是可以在文件内被调用

c = a + b
–文件在被require的时候,会被执行

function addB()
–文件内部可以调用变量b
b = b + 1
return b
end
run.lua

require"test"
print(test.a)–输出1
print(test.b)–输出nil,因为b是local变量
print(test.c)–输出3

print(test.addB())–输出3
print(test.addB())–输出4
print(test.addB())–输出5
同时,每个文件最多只会被require一次,如果有多个require,只有第一次会执行
2. Lua5.3里的用法
在编写代码时,随着逻辑逐渐复杂,我们的代码量也会变大。虽然有函数可以把一部分代码逻辑封装起来,但是所有代码都放到一个文件里,显然也不是个好办法。

所以我们需要将一些代码放到不同文件中,通过文件来区分这些代码的功能。

比如我们有下面这个函数:

—函数功能:
– 生成从1-max的table
– @输入值:table的最大值
– @返回: table结果
– @例子: local list = getNumberList(10)
function getNumberList(max)
local t = {}
for i=1,max do
table.insert(t,i)
end
return t
end
我们新建一个文件叫tools.lua,把这个函数放进去,现在,整个文件如下面这样:
tools.lua

—函数功能:
– 生成从1-max的table
– @输入值:table的最大值
– @返回: table结果
– @例子: local list = getNumberList(10)
local function getNumberList(max)
local t = {}
for i=1,max do
table.insert(t,i)
end
return t
end

–手动返回一个table,包含了上面的函数
return {
getNumberList = getNumberList,
}
现在,我们封装的这个函数就能在其他文件里被调用了,具体代码如下:

–引用tools.lua文件,并加载
local tool = require(“tools”)

local list = tool.getNumberList(12)
当调用了require接口后,Lua虚拟机会自动加载你调用的文件,执行文件的内容,然后返回你文件里return的结果。

为了更好地理解这段话,我们可以看下面两个文件,其中run.lua是被运行的那个入口文件
test.lua

–以便一会儿返回使用的table
local temp = {}

–把全局变量a更改了
a = 1

–local变量无法被外部调用
–但是可以在文件内被调用
local b = 2

–文件在被require的时候,会被执行
–把全局变量c更改了
c = a + b

–使函数在table里
function temp.addB()
–文件内部可以调用变量b
b = b + 1
return b
end

–返回table
return temp
run.lua

local test = require(“test”)
print(a)–输出1
print(b)–输出nil,因为b是local变量
print©–输出3

print(test.addB())–输出3
print(test.addB())–输出4
print(test.addB())–输出5
同时,每个文件最多只会被require一次,如果有多个require,只有第一次会执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
luaforwindows_v5.4是一个基于Lua编程语言的集成开发环境(IDE),它为Lua提供了一系列的工具和组件,使得开发者能够更便捷地编写、调试和运行Lua代码。 首先,luaforwindows_v5.4提供了一个美观且用户友好的图形界面,方便开发者进行代码编写和编辑。用户可以在编辑器中编写Lua脚本,并享受到语法高亮、自动补全等强大的代码编辑功能。这能大大提高编码效率,减少出错的可能性。 其次,luaforwindows_v5.4集成了Lua解释器,可以直接在IDE中运行Lua脚本,无需额外的配置和安装。开发者可以通过点击运行按钮,快速执行写好的代码,并即时查看运行结果。这样可以快速验证代码的正确性和效果。 此外,luaforwindows_v5.4还包含了一系列常用的库和工具,如LuaSocket、LuaFileSystem等,可以方便地进行网络编程、文件操作等常见任务。开发者可以通过简单的配置和调用,快速实现各种功能需求,提高开发效率。 最后,luaforwindows_v5.4还提供了一些调试功能,如断点调试、变量监视等,方便开发者进行代码调试和错误排查。这些功能可以帮助开发者快速定位问题,并提供友好的错误提示和信息,有助于开发高质量的Lua程序。 综上所述,luaforwindows_v5.4是一款强大的Lua集成开发环境,为开发者提供了便捷的编程工具和组件,帮助开发者更高效、更方便地进行Lua开发。无论是初学者还是有经验的开发者,都可以通过luaforwindows_v5.4轻松开始和完成自己的Lua项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值