Lua编程--快速入门
来源bilibili:无废话30分钟 Lua快速入门教程 - 4K超清
Lua5.3参考手册:Lua5.3参考手册
1 运行环境
2 变量赋值
直接给变量赋值,默认为全局变量(可以在别的文件引用)。局部变量用local修饰,只在当前作用域内有效(如代码块内、函数内、本文件内)
a = 1
local b = 2
也可以给多个变量赋值
a,b = 4, 5
a,b,c = 4, 5 --c没有被赋值,值为nil
3 注释
- 单行注释:
--开头 - 多行注释:以
--[[开头,以]]结尾
--单行注释
--[[多行
注释]]
4 数据类型
nil类型:没有被声明的变量值都是nil, 如print(c),这里c的值就是nil- number类型:(C语言中int、char、long、float等, 在Lua中统一为number型)
a = 3
b = 0x11 --支持十六进制
c = 2e10 --支持科学计数法,2乘以10的10次方
5 算术运算符
- 支持加+、减-、乘*、除/、取余%、乘幂^、负号-运算
- 支持左移<<、右移>>(Lua5.3以后支持)
a = 1 << 3 -- a=8
b = 16 >> 3 -- b=2
6 string字符串
可用三种方式表示,支持转义字符,如\n
- 单引号:
a = 'Hell\no' - 双引号:`b = "Hell\no"
- 双括号:
c = [[双括号支持字符串包含换行]], 该方式会将原始字符串原原本本的存入变量,如包含\n, print输出的也是"\n" 2个可见字符,而不是不可见的换行符。
与C语言的字符串不同,Lua字符串可以包含0x00,不影响字符串的长度。所以Lua中可以用字符串存储二进制流。
a = 'Hello\n World'
b = "Hello\n World"
c = [[Hello\n
World]]
输出
Hello
World Hello
World Hello\n
World
字符串连接符..
a = "Hello "
b = "World"
c = a..b
数字和字符串转换
s = tostring(10)
n = tonumber("109") --若转换失败,返回nil
字符串长度
s = "Hello"
print(#s) --输出 5
7 函数
声明形式
function 函数名function_name(参数...)
--函数体body
end --默认返回nil
或者函数名在前
函数名function_name = function(参数...)
--body
end
例子
function f(a, b, c)
print(a, b, c)
return a,c
end
sa, sb = f(1, 2) --这里只传了a和b, c默认就为nil
8 Table 数组
有两种下标:数字下标和字符串下标
- 数字下标:下标从1开始(不同于其他语言从0开始),table(相当于数组)中可以不同类型的元素混合,可以整数、字符串、table、甚至函数,#+table名可以获取table中元素的个数。引用的下标超过table元素个数时,获取的是nil。
a = {34, "Hello", {}, function() end}
a[5] = 123 --新增一个元素
table.insert(a, "d") --末尾插入一个新元素(字符串类型),这里table其实也是一个全局变量(类型为table,下标insert)
table.insert(a, 2, "e") --在第2个位置插入"e"
print(a[6]) --打印123
print(#a) --打印7,a有7个元素
local x = table.remove(a, 2) --删除第2个元素,并返回移除的元素
- 字符串下标:需要将下标符号直接写出来
a = {
a = 1,
b = "1234",
c = functio()
end,
d = 12343,
[",;"] = 456
}
print(a["a"]) --字符串下标有单引号或者双引号括起来
print(a.a) --对与下标命名符合规范的,可以这样引用
print(a[",;"]) --下标命名不规范的就用中括号的方式引用
a["xy"] = 897 --可以直接对table的下标赋值,若访问没有声明过的下标,返回的就是nil
9 全局表
Lua中有一个特殊的表_G, Lua中所有的全局变量都在_G表中
a = 1
print(_G["a"]) --打印的就是全局变量a的值
10 逻辑运算
- 布尔值:只有真true和假false。注意,Lua中只有false和nil表示假,其他都是真,包括整数0也是真(与C语言不同)
- 比较运算:==、~=(不等,不同于C语言中!=)、>、>=、 <、<=
- 逻辑运算: and、or、not ,只有not 返回的是true或者false,and和or返回的是A或者B的值,比如
a = nil --假
b = 0 --真
print(a and b) --打印nil
print(a or b) --打印0
print(not a) --打印true
--可以利用and or的这个特性,实现短路求值
print(b > 10 and "yes" or "no") --打印no
11 分支判断
语法结构为
if 条件1 then
满足条件1
elseif 条件2 then
不满足条件1,但是满足条件2
else
前面条件全都不满足
end
12 循环
可以用 break 中断循环。
12.1 while循环
while 继续循环判断依据 do
执行的代码
end
例子
local n = 10
while n > 0 do
print(n)
n = n - 1 --Lua不支持自增、自减、-=等操作,只能n = n - 1 的形式
end
12.2 for循环
for 临时变量名=开始值,结束值,步长 do --步长可以省略,默认为1
循环的代码 --循环途中 临时变量是不允许修改的, 如果给它赋值新值,Lua会新建一个新的临时变量供使用
end

浙公网安备 33010602011771号