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,只有第一次会执行