基本语法
变量定义
基本的操作 1
2
3
4
5a = 1
b = 2
str = "hello world"
print(a + b)
print(str)1
2
3a,b = 1,2;
print(a)
print(b)
1 | a = nil |
十六进制与科学计数法 1
2
3
4a = 0x11
b = 2e10
print(a)
print(b)
数字运算符
Lua 支持加减乘除、幂等多种运算
1 | a = 1 |
逻辑运算符与 true、false
注意:0 为 true,nil 为 false
1 | a = nil |
三元表达式 1
2a = 0
print(a <=0 and "小于等于 0" or "大于 0") --输出"小于等于 0"
字符串
单引号双引号均可 1
2
3
4a = 'hello world a'
b = "hello world b"
print(a)
print(b)1
2a = 'hello world\n换行' --\n换行
print(a)1
2a = [['hello world\n换行']]
print(a)
1 | a = 'hello ' |
tostring(param) 与 tonumber(param) 如果tonumber()转换失败则值为nil
1 | a = tostring(1000) |
变量前加 '#' 获取字符串长度
1 | a = "hello world" |
函数
函数的基本形式 1
2
3
4
5function f(a,b)
print(a + b)
end
f(1,2)
1 | function f(a,b,c) |
可以 return 多个值,多个值可以配合多重赋值语句
1 | function f(a,b,c) |
table 结构
table 类似数组,但是可以存数字、字符串、其他 table、函数在一个 table 中 table 下标从 1 开始
1 | tab = {1,"hello world",{},function() end} |
下标越界的元素为 nil
1 | tab = {1,"hello world",{},function() end} |
指定位置插入元素 1
2
3tab = {1,"hello world",{},function() end}
tab[10] = 10
print(tab[10])1
2
3tab = {1,"hello world",{},function() end}
table.insert(tab,"no.n")
print(tab[5])1
2
3tab = {1,"hello world",{},function() end}
table.insert(tab,3,"no.3")
print(tab[3])1
2
3
4
5
6
7tab = {1,"hello world",{},function() end}
table.insert(tab,2,"no.2")
print(tab[2])
local del = table.remove(tab,2)
print(tab[2])
print(del)
1 | tab = { |
特殊符号下标 1
2
3
4
5
6
7
8
9
10tab = {
a = 'hello'
}
tab["..."] = "...."
tab["abc"] = "abc"
print(tab["..."])
print(tab["abc"])
print(tab.abc)tab.abc
,特殊符号只能通过 tab["..."]
形式指定下标
分支判断
以 if 和 end 为代码块,支持 elseif
1 | a = 5 |
0 为 true,nil 为 false
1 | a = 0 |
循环
起始值为 0,到 10 结束
1 | for i=0,10 do |
起始值为 10,步长为 -1,到 0 结束
1 | for i=10,0,-1 do |
循环中 i 的值不能更改(循环所用的值其实是变量 i 的值拷贝)
1 | for i=10,0,-1 do |
break 语句
1 | for i=10,0,-1 do |
while 语句
1 | num = 10 |
补充
string.char() 支持十进制、十六进制等
1 | s = string.char(104,101,108,0x6C,0x6f) --"hello" |
string.byte() 取出第 n 位字母的十进制
1 | s = string.char(104,101,108,0x6C,0x6f) |
0x00 在 lua 字符串中不会影响字符串的结束,取值为 0
1 | s = string.char(104,101,0x00,108,0x6C,0x6f) |