lua学习

照着操作了一遍
https://blog.csdn.net/qq_40506747/article/details/120388764

一、数据类型

数据类型
number所有值包括十六进制和科学计数法
booleantrue或false
string字符串
function函数
tablelua语言的核心之一,类似哈希表
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计算最小值
powx的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+ 添加更新,之前数据被保存,只允许在文件尾进行添加
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值