学习笔记
环境配置
浏览器直接使用编译器
变量
声明
变量声明,全局变量
a = 1
b = 2
局部变量声明
local a = 1
nil
print(a)
a 未赋值,打印结果nil
多重赋值
多重赋值
a,b,c = 1,2,3
print(a,b,c)
打印1 2 3
a,b,c = 1,2
print(a,b,c)
打印1 2 nil
数值型
支持十六进制表示和科学计数法
a = 0x11
b = 2e10
print(a,b)
打印
17 20000000000.0
算数运算符
加减乘除
幂
print(2^5)
左右移
print(1<<3)
打印8
字符串
可以单引号,也可以双引号
a = "asdf"
b = 'asdasfd0'
print(a,b)
中括号 [[ ]]
c = [[asdas
asd/asd
asdasd
asdasd
asdasd]]
print(c)
打印
asdas
asd/asd
asdasd
asdasd
asdasd
字符串连接
两个点
a = "asdf"
b = 'asdasfd0'
c = a..b
print(c)
数字和字符串转换
a = tostring(10)
b = tonumber("123")
print(a,b)
字符串转换为数字失败时,输出nil
查看字符串长度
#加字符串
b = "asdasdasd"
print(#b)
打印9
字符串ASCII 码转 字符串
s = string.char(0x30,0x31,0x32,0x33)
print(s)
--0123
取出字符
s = string.char(0x30,0x31,0x32,0x33)
n = string.byte(s,2)
print(n)
-- 49,查看ASCII表
函数
结构
function function_name( ... )
-- body
end
--也可以
function_name = function( ... )
-- body
end
function f(a,b)
print(a,b)
end
f(1,2)
返回值
--return
function f(a,b)
return a,b
end
print(f(2,3))
table
table基础
类似数组,不过可以存放很多类型,且下标从1开始
a = {1,"asd",{},function() end}
print(a[1])
--类似数组,不过可以存放很多类型
赋值
a = {1,"asd",{},function() end}
a[5] = "qwe"
print(a[5])
获取长度
a = {1,"asd",{},function() end}
a[5] = "qwe"
print(#a)
--结果5
插入元素
a = {1,"asd",{},function() end}
a[5] = "qwe"
table.insert(a, "asd")
print(#a)
--结果6
a = {1,"asd",{},function() end}
a[5] = "qwe"
table.insert(a,2, "zxc")
print(#a)
print(a[2],a[3],a[4])
--6
-- zxc asd table: 0x154
移除元素
移除元素同时还能赋值
a = {1,"asd",{},function() end}
a[5] = "qwe"
table.insert(a,2, "zxc")
local s = table.remove(a,2)
print(s)
--zxc
table 字符串下标
带有下标,下标要写出来,且要用“”括起来
符合命名规范可以用小数点
a = {
a =1,
b = "123",
c = function()
end,
d = 123123
}
print(a['a'])
--打印1
print(a.a)--小数点
print(a.b)
赋值
a = {
a =1,
["aa"] = 123
}
a["aaa"] = "qwewqe"
print(a["aa"])
print(a.aaa)
_G
_G是一个表 table,所有的全局变量都在这里面
a = 1;--全局变量a,被放在_G里面
print(_G['a'])
--1
真假
a = true
b = false
print(1>2) -- false
print(1<2) --true
print(1>=2)-- false
print(1<=2)--true
print(1==2)-- false
print(1~=2)--true 不等于用~=
print(a and b)-- false
print(a or b)--true
print(not a)-- false
lua 中只有false 和 nil 代表假 其他代表真
0 也是真
同时and,or not 不一定返回true ,或false,也可以返回值
a = nil
b = 0
print(a and b) -- nil
print(a or b) -- 0
print( not b) -- true
类似三目运算符
a = nil
b = 0
print(b > 10 and "yes" or "no")
-- no
分支判断语句
if 1 > 10 then
print("1>10")
elseif 1 < 10 then
print("1<10")
elsexun
print("no")
end
循环
for循环
for i=1,10 do
print(i)
end
--打印1到10
for i=1,10,2 do
print(i)
end
--步长为2 ,打印1 3 5 7 9
for i=10,1,-2 do
print(i)
end
--倒叙,打印10 8 6 4 2
for循环中不能改变 i 值
可以break
for i=10,1,-2 do
print(i)
if i == 4 then
break
end
end
--打印 10 8 6 4
while循环
while 条件 do
end
local n = 10
while n > 5 do
print(n)
n = n -2
end
-- 打印10 8 6
while 里也可以用break
lua 不能用自减 如 a-- 不可以