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)
输出
多变量赋值
变量数与赋值个数相等
a,b = 1,2
print(a,b)
输出
变量数与赋值个数不等
a,b ,c= 1,2
print(a,b,c)
此时c未赋值输出nil
输出
数据类型
数值型
整数和浮点数在lua中都叫做number
十进制
a = 1
print(a)
十六进制
a = 0x11
print(a)
输出
科学计数法
a = 2e10
print(a)
输出
字符串
单行文本
在lua中字符串可以用单引号
或双引号
a = 'a'
b= "b"
print(a,b)
输出
转义字符
a = '1\n1'
print(a)
输出
多行文本
在lua中多行字符串使用[[]]
a= [[
1123
677
\n
90
]]
print(a)
输出
换行符\n
被输出没有换行效果
字符串拼接
在lua中使用..
拼接两个字符串
a = '12'
b = '34'
print(a..b)
print(b..a)
输出
string与number转换
string转number如转换失败会输出nil
a = tostring(10)
b = tonumber("10")
c = tonumber("a")
print(a,b,c)
输出
获取字符串长度
a = '123'
print(#a)
输出
ascii转成字符串
s = string.char(65,66)
print(s)
输出
取字符串的某一位的ascii值 string.byte()
s = "ABC"
print( string.byte(s,2))
布尔
lua中只有false
和 nil
代表假
,其他都代表真
a = true
b = false
运算符
算术运算
a = 1
b = 1
print(a+b)
输出
幂运算
计算2的3次方
print(2^3)
输出
位运算
lua5.3开始支持位运算
print(1<<3)
输出
不等号
lua中的不等号 ~=
逻辑运算符
与 and
print(true and true)
print(true and false)
输出
and
的返回结果不一定是布尔值
a= nil
b = 0
print(a and b)
输出
a
代表假,b
代表真。a and b
为假 返回 a
短路用法
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>10
是false
,false and yes
返回false
false or "yes"
返回真yes
或 or
print(true or true)
print(true or false)
print(false or false)
输出
非 not
print(not true)
print(not false)
输出
函数
函数声明方式一
function 函数名(参数)
函数内容
end
计算输入两个参数的和
function sum(a,b)
print(a+b)
end
函数声明方式二
函数名 = function (参数)
函数内容
end
sum = function (a,b)
print(a+b)
end
函数调用
函数名(参数)
sum(1,1)
输出
函数调用时传入参数个数少于声明参数的个数
函数调用时少传的形参未nil
f = function(a,b,c)
print(a,b,c)
end
f(1,2)
输出
函数的返回值
使用return
返回1个值
f = function(a,b,c)
return a+b+c
end
print(f(1,1,1))
输出
使用return
返回多个值
f = function(a,b,c)
return a,b,c
end
print(f(1,1,1))
输出
变量接收多个返回值
f = function(a,b,c)
return a,b,c
end
d,e,f = f(1,2,3)
print(d,e,f)
输出
无返回值
若函数执行结束后无任何返回则反回值未nil
f = function(a,b,c)
print(a,b,c)
end
d = f(1,2)
print(d)
print("-------")
print(f(1,2))
输出
table
数字下标table
声明、取值、赋值
可以存number
、string
、function
,
下标是从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])
输出
查看table元素个数
a = {1,"ab",{},function() print('fun') end }
print(#a)
输出
在末尾插入元素
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)
输出
在指定索引插入元素
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])
输出
插入后指定索引后的元素下标+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)
输出
字符串下标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"])
输出
全局表
lua中有一个全局表_G
,_G
中存储了所有的全局变量
print(_G)
print("-----")
print(_G["a"])
a = 1
print(_G["a"])
分支判断
if 1> 10 then
print("1 > 10")
elseif 1 < 10 then
print("1 <10")
else
print("no")
end
输出
循环
for
指定初始值和结束值
for 变量=初始值 ,结束值 do
print(i)
end
for循环中变量不可被修改
for i=1,10 do
print(i)
end
输出
指定初始值、结束值和步长
for 变量=初始值 ,结束值,步长 do
print(i)
end
for i=1,10,2 do
print(i)
end
输出
for i=10,1,-1 do
print(i)
end
输出
break
for i=1,10,1 do
print(i)
if i == 5 then
break
end
end
** 输出**
while
local n = 10
while n > 1 do
print(n)
n = n-1
end
输出
while中也可以使用
break
repeat
略
评论区