Luat训练营-第4天

@TOC

第3天内容复习

第3日内容

第4天内容

模块化编程

module 将文件声明为模块,写法 module(…, package.seeall)
require 引入一个文件包

1
2
module(..., package.seeall) --使得文件中的函数在何处都可调用
require"pins" --用到了pin库,该库为luatask专用库,需要进行引用

跨文件调用 Lua5.1

新建一个文件叫tools.lua,把这个函数放进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--使这个代码在哪个文件里都能被调用
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

封装的这个函数就能在其他文件里调用

1
2
3
--引用tools.lua文件,并加载
require"tools"
local list = tools.getNumberList(12)

跨文件调用 Lua5.3

新建一个文件叫tools.lua,把这个函数放进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

---函数功能:
-- 生成从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,
}

封装的这个函数就能在其他文件里调用

1
2
3
--引用tools.lua文件,并加载
require"tools"
local list = tools.getNumberList(12)

※string库

字符串长度

string.len接收一个字符串,返回它的长度。

1
2
a = "hello lua"
print(string.len(a))--空格也算

字符串大小写转换

string.upper(s)接收一个字符串 s,返回一个把所有小写字母变成大写字母的字符串。
string.lower(s)接收一个字符串 s,返回一个把所有大写字母变成小写字母的字符串。

1
2
3
4
a = "hello lua"
a = string.upper(a)--大写a
print(a)--打印a 
print(string.lower(a))--小写a

字符串索引

string.sub(s, i [, j])返回字符串 s 中,从索引 i 到索引 j 之间的子字符串。

1
2
3
d = "123456789"
dout = string.sub(d,4,6-- 打印从4-6
print(dout)

字符串编码

string.char (...)接收 0 个或更多的整数(整数范围:0~255),返回这些整数所对应的 ASCII 码字符组成的字符串。

1
2
3
4
5
6
7
8
-- 抄大佬的
t={0x79,0x6F,0x75,0x20,0x61,0x72,0x65,0x20,0x72,0x69,0x67,0x68,0x74}
print("真正的字符串内容:")
m=""
for k,vinipairs(t) do
m=m..string.char(t[k])
end
print(m)

string.byte返回字符 s[i]、s[i + 1]、s[i + 2]、······、s[j] 所对应的 ASCII 码。

1
2
3
a = "123"
b = string.byte(a)
print(b)

string.format(formatstring, ...)按照格式化参数formatstring,返回后面…内容的格式化版本。

1
2
3
print(string.format("%.4f", 3.1415926)) -- 保留4位小数
print(string.format("%d %x %o", 31, 31, 31))-- 十进制数31转换成不同进制 d,m,y = 29,7,2015
print(string.format("%s %02d/%02d/%d", "today is:", d, m, y))

luat框架

Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。

线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被挂起。协同程序有点类似同步的多线程,在等待同一个线程锁的几个线程有点类似协同。
协同程序更详细介绍

Air724UG介绍

724UG

第5天

第五天

上次更新 2021-01-28