侧边栏壁纸
博主头像
丛庆

没事儿写代码,有事写代码。email:1024@cong.zone

  • 累计撰写 116 篇文章
  • 累计创建 97 个标签
  • 累计收到 4 条评论
lua

【Lua】快速学习笔记

丛庆
2023-12-23 / 0 评论 / 0 点赞 / 185 阅读 / 1,551 字 / 正在检测是否收录...
温馨提示:
部分资料和图片来源于网络,如有危害到您的利益请与我联系删除,1024@cong.zone。

lua运行测试

https://wiki.luatos.com/_static/luatos-emulator/lua.html

文档
https://wiki.luatos.com/_static/lua53doc/index.html

二进制包下载
https://joedf.ahkscript.org/LuaBuilds/

变量

全局变量

a = 1
b =2

以上变量声明后是全局变量,在所有的文件中都可以使用

局部变量

local a = 1
local b =2

以上变量声明后是局部变量,只能在当前作用域使用(函数、代码块、当前文件)

未声明过的变量

所有的未声明变量都为nil

print(c)

输出
image

多变量赋值

变量数与赋值个数相等

a,b = 1,2
print(a,b)

输出
image-1703329258455

变量数与赋值个数不等

a,b ,c= 1,2
print(a,b,c)

此时c未赋值输出nil
输出
image-1703329338696

数据类型

数值型

整数和浮点数在lua中都叫做number

十进制

a = 1
print(a)

十六进制

a = 0x11
print(a)

输出
image-1703330191730

科学计数法

a = 2e10
print(a)

输出
image-1703330215586

字符串

单行文本

在lua中字符串可以用单引号双引号

a = 'a'
b= "b"
print(a,b)

输出
image-1703330546260

转义字符

a = '1\n1'
print(a)

输出
image-1703330646708

多行文本

在lua中多行字符串使用[[]]

a= [[ 
1123
677
\n
90
]]
print(a)

输出
image-1703330776069
换行符\n被输出没有换行效果

字符串拼接

在lua中使用..拼接两个字符串

a = '12'
b = '34'
print(a..b)
print(b..a)

输出
image-1703330869181

string与number转换

string转number如转换失败会输出nil

a = tostring(10)
b = tonumber("10")
c = tonumber("a")
print(a,b,c)

输出
image-1703331001537

获取字符串长度

a = '123'
print(#a)

输出
image-1703331055378

ascii转成字符串

s = string.char(65,66)
print(s)

输出
image-1703359281565

取字符串的某一位的ascii值 string.byte()

s = "ABC"
print( string.byte(s,2))

image-1703359381184

布尔

lua中只有falsenil代表 ,其他都代表

a = true
b = false

运算符

算术运算

a = 1
b = 1
print(a+b)

输出
image-1703330305010

幂运算

计算2的3次方

print(2^3)

输出
image-1703330373329

位运算

lua5.3开始支持位运算

print(1<<3)

输出
image-1703330428788

不等号

lua中的不等号 ~=

逻辑运算符

与 and

print(true and true)
print(true and false)

输出
image-1703357317910

and的返回结果不一定是布尔值

a= nil
b = 0
print(a and b)

输出
a代表假,b代表真。a and b为假 返回 a
image-1703357514958

短路用法

a= nil
b = 0
print(b > 10 and "yes" )
print(false or "yes" )
print("-----")
print(b > 10 and "yes" or "no")
print(b < 10 and "yes" or "no")

输出
分析b > 10 and "yes" or "no"
因为b>10falsefalse and yes 返回false
false or "yes"返回真yes
image-1703357836608

或 or

print(true or true)
print(true or false)
print(false or false)

输出
image-1703357337190

非 not

print(not true)
print(not false)

输出
image-1703357351690

函数

函数声明方式一

function 函数名(参数)
函数内容
end

计算输入两个参数的和

function sum(a,b)
	print(a+b)
end

函数声明方式二

函数名 = function (参数)
函数内容
end

sum = function (a,b)
	print(a+b)
end

函数调用

函数名(参数)

sum(1,1)

输出
image-1703331323809

函数调用时传入参数个数少于声明参数的个数

函数调用时少传的形参未nil

f = function(a,b,c)
	print(a,b,c)
end

f(1,2)

输出
image-1703331471346

函数的返回值

使用return返回1个值

f = function(a,b,c)
	return a+b+c
end
print(f(1,1,1))

输出
image-1703331689010

使用return返回多个值

f = function(a,b,c)
	return a,b,c
end
print(f(1,1,1))

输出
image-1703331772150

变量接收多个返回值

f = function(a,b,c)
	return a,b,c
end
d,e,f = f(1,2,3)
print(d,e,f)

输出
image-1703331835743

无返回值

若函数执行结束后无任何返回则反回值未nil

f = function(a,b,c)
	print(a,b,c)
end

d = f(1,2)
print(d)
print("-------")
print(f(1,2))

输出
image-1703331612990

table

数字下标table

声明、取值、赋值

可以存numberstringfunction,
下标是从1开始的,下标无对应值会返回nil
使用 变量[5] = '55'给指定下标赋值

a = {1,"ab",{},function() print('fun') end  }
print(a[1])
print(a[2])
print(a[3])
print(a[4])
print(a[5])
a[5] = '55'
print(a[5])

输出
image-1703332223646

查看table元素个数

a = {1,"ab",{},function() print('fun') end  }
print(#a)

输出
image-1703332426787

在末尾插入元素

table.insert(table变量,插入的内容)

a = {1,"ab",{},function() print('fun') end  }
print(a[1])
print(a[2])
print(a[3])
table.insert(a,"d")
print(4)

输出
image-1703332379889

在指定索引插入元素

table.insert(table变量,索引值,插入的内容)

a = {1,"ab",{},function() print('fun') end  }
print(a[2])
print(a[3])
table.insert(a,2,"d")
print(a[2])
print(a[3])

输出
image-1703332548720
插入后指定索引后的元素下标+1

移除table中的指定元素

删除的元素 = table.remove(table变量,下标值)

a = {1,"ab",{},function() print('fun') end  }
print(a[2])
print(a[3])
print("---insert--")
table.insert(a,2,"d")
print(a[2])
print(a[3])
print("---remove--")
local r = table.remove(a,2)
print(a[2])
print(a[3])
print("-----")
print(r)

输出
image-1703332789554

字符串下标table

声明、取值、赋值

取值时如果下标没有被声明则返回nil

a = {
	a=1,
    b="1234",
    c= function()
    end,
    d = 123123,
    [",;"] = 123
}
print(a["a"])
print(a.a)
print(a[",;"])

a["abc"] = "123"
print(a["abc"])

输出
image-1703356817988

全局表

lua中有一个全局表_G_G中存储了所有的全局变量

print(_G)
print("-----")
print(_G["a"])
a = 1
print(_G["a"])

image-1703357003965

分支判断

if 1> 10 then
	print("1 > 10")
elseif 1 < 10 then
	print("1 <10")
else
	print("no")
end

输出
image-1703358141122

循环

for

指定初始值和结束值

for 变量=初始值 ,结束值 do
print(i)
end

for循环中变量不可被修改

for i=1,10 do
	print(i)
end

输出
image-1703358567900

指定初始值、结束值和步长

for 变量=初始值 ,结束值,步长 do
print(i)
end

for i=1,10,2 do
	print(i)
end

输出
image-1703358619100

for i=10,1,-1 do
	print(i)
end

输出
image-1703358659607

break

for i=1,10,1 do
	print(i)
    if i == 5 then
        break 
    end
end

** 输出**
image-1703358936546

while

local n = 10
while n > 1 do
	print(n)
    n = n-1
end

输出
image-1703359067189

while中也可以使用break

repeat

0

评论区