照着操作了一遍
https://blog.csdn.net/qq_40506747/article/details/120388764
一、数据类型
数据类型 | |
---|---|
number | 所有值包括十六进制和科学计数法 |
boolean | true或false |
string | 字符串 |
function | 函数 |
table | lua语言的核心之一,类似哈希表 |
userdata | 自定义类型,脚本用户只能使用,不能对其进行定义 |
thread | 线程 |
nil | 空类型 |
全局变量: 没有被local修饰
局部变量:被local修饰
二、运算符
不一样的运算符(其他运算符和其他语言基本没差别) | |
---|---|
~= | 不等于 |
and | 和 |
or | 或 |
not | 非 |
… | 链接 |
三、函数
方式一
function 函数名(参数列表)
--函数内容
return 返回值 --可以没有
end
方式二
函数名 = function(参数列表)
--函数内容
return 返回值 --可以没有
end
实例
function test(p1,p2)
local r1 = p1 + p2
local r2 = p1 - p2
return r1,r2
end
r1,r2 = test(1,2)
print(r1..":"..r2)
函数库:math库,string库,io库,table库等
可变参数:…
function f1(...) -- 三个点表示函数的参数个数不确定
function f2(a,b,...) -- 两个固定参数 + 不固定参数
f1(1) --a=1,b=nil,arg={n=0}
f1(1,2)
f2(1,2)
f2(1,2,3,4) --a=1,b=2,arg={3,4;n=2}
四、条件语句
第一种
if 表达式 then
--语句块
end
第二种
if 表达式1 then
--语句块1
elseif 表达式2 then
--语句块2
else
--语句块3
end
实例
function high(p)
if p>174 then
print("高")
elseif p>164 and p<175 then
print("中等")
else
print("矮")
end
end
high(175)
五、循环语句
第一种 while
function t()
local i = 1
while i ~= 100 do
if i<10 then
print(i)
end
i=i+1
end
end
第二种 repeat
function t(j)
local i = j
repeat
print(i)
i = i+1
until i>100
end
t(99)
第三种
function t(j)
for i=j,100,1 do
print(i)
end
end
t(90)
递归求斐波那契数列
function t(j)
if j<=2 then
return 1
end
return t(j-1)+t(j-2)
end
六、表
类似Java里的数组,元素类型一致
array = {} --空表
array = {"a","b"} --默认key值,从1开始递增
array = {"a",name="b","c"} --指定key的分配时跳过自定义key
赋值
array={}
array["name"] = "ljf"
array.sex = "男"
print(array["sex"])
添加函数
--添加函数
array1 = {}
array1.func = function()
print("添加函数到表")
end
--调用函数
array1.func()
删除
array.name = nil
array["sex"] = nil
方法
array = {"1","2","3"}
--使用 # 获取数组长度
print(#array)
--添加元素
array.insert(array,4,"4") --如果插入位置有值,则自此位置的元素后移一位,如果不指定键,默认添加到最后
--删除元素
array.remove(array,1)
七、函数库
基本库
函数 | 作用 |
---|---|
print() | 打印 |
tostring(“123”) | 返回字符串“123” |
tonumber(参数) | 将参数转化为数字 |
type() | 返回参数类型名 |
rawset(表,键,值) | 修改键值,返回表的指针 |
rawset(表,键) | 获取表中键对应的值,不存在返回nil |
dofile(程序块) | 打开并执行一个lau程序块 |
next(表,键) | 针对数字做键的表,返回下一个键,值 |
pairs | 迭代器,遍历表中所有键可返回nil |
ipairs | 不能返回nil,只能返回0,遇到nil则退出 |
常用数学库
函数 | 作用 |
---|---|
abs | 取绝对值 |
floor | 向下取整 |
fmod | 取模 |
max | 计算最大值 |
min | 计算最小值 |
pow | x的y次幂 |
random | 获取随机数 |
常用表库
函数 | 作用 |
---|---|
table.contact(表,分隔符,开始下标,结束下标) | 返回表中区段元素按分隔符拼接的结果 |
table.insert(表,键,值) | 如果插入位置有值,则自此位置的元素后移一位,如果不指定键,默认添加到最后 |
table.maxn(表) | 返回最大正数键,没有返回0 |
table.remove(表,键) | 删除表中的指定键元素,后面元素前移,省略则从最后一个删起 |
table.sort(表,comp) | 对指定的表进行升序排序。comp可选参数,此参数是一个外部函数,可以自定义sort函数的排序标准,此函数应满足以下条件:接受两个参数a,b,并返回一个布尔型的值,当a应该排在b前面时,反悔true,否则返回false。 |
table.foreachi(表,function(i,v)) | 从1开始的连续整数范围,依次对表中的每个键值,执行函数 |
table.foreach(表,function(i,v)) | 依次对表中的每个键值,执行函数 |
table.getn(表) | 返回表中元素的个数 |
table.setn(表,个数) | 设置表中元素的个数 |
字符串库
函数 | 作用 |
---|---|
string.len(字符串) | 字符串的长度 |
string.rep(字符串,数值) | 返回字符串的n个拷贝 |
string.lower(字符串) | 字符转小写 |
string.sub(字符串,参数,参数) | 截取部分字符串 |
string.byte(字符串,参数) | 返回字符串中参数所指向字符的ascii码 |
string.char(参数,参数,参数,…) | 将ascii码转化为对应的字符 |
string.gsub(字符串,被替换的字符串,替换的字符串,参数) | 替换字符串的一部分,参数为需要替换的个数 |
string.find(字符串,参数,开始位置) | 查找在字符串中的某一部分,返回索引 |
string.format(格式化字符串,格式化参量) | 格式化字符串 |
简单流和文件库
io.put("导入文件.txt")
io.read() --读取文件内容
io.output("输出文件.txt")
io.write() --输出读取的内存到 输出文件.txt
io.flush() --输出所有缓冲区的内容到输出文件
io.close() --关闭打开的文件
io.open(filename,mode) --按指定模式打开一个文件,成功则返回文件句柄,失败则返回nil+错误信息
mode:
r 读
w 写
a 添加
r+ 更新,之前数据被保存
w+ 更新,之前数据被删除
a+ 添加更新,之前数据被保存,只允许在文件尾进行添加