Lua基础
1.变量声明
在Lua里只有赋值一个变量就是新建一个变量,如下就声明了两个变量
但Lua声明的变量默认是全局变量(第1行),如果只在当前文件区域用可以加一个local(如第2行)
1 | a = 1 |
除此之外,这个赋值语句其实可以给多个变量赋值,格式如下
1 | a,b = 1,2 |
2.nil类型
在lua里没有被声明过的变量都是 nil,nil是一种类型,这种类型只有一个值也就是nil
3.数值类型(number类型)和运算符
lua与别的语言不同,数字就只有一个类型就是number
在lua里支持16进制表示方法(0x开头),还支持科学计数法(例如2e10)
lua支持加减乘除运算(+,-,^,等等)
lua5.3后支持左移右移符合(例如1<<3就是1左移三位,输出8)
lua支持各种运算符如>、<、≥、≤、==、~=(不等于)
支持and or not 三个(与或非)
4.字符串
- lua中用双引号””或者单引号’’来括住字符都可以
同时支持\n这个转移字符(也就是换行)
1 | a = "first line\n second line" |
输出结果如下:
first line
second line second line too
- 如果需要使用一个多行文本,可以用两个中括号表示,转义字符也不会被转换
1 | c = [[thefirstline |
输出如下:
thefirstline
\nwillnotchange
thethirdline
- lua中字符串的连接符号是两个点
1 | a = 'abcd' |
- 将数字转化成字符串用到tostring(),字符串转化成数字用tonumber()
1 | c = tostring(10) |
- 在字符串前面加上一个#,可以获取这个字符串的长度
1 | a = "awjdawfawdsa" |
5.函数
- 函数的两种声明方式:
1 | function function_name(...) --function 函数名(参数) |
- 函数的调用方式:
1 | function function_name(a,b) |
- 可以用return来选择返回什么值
1 | function f(a,b) |
1 | function f(a,b,c) |
第二个例子的输出结果为
1
2
6.table
lua里table有两种下标,分为数字下标和字符串下标
- 数字下标,类似于其他语言的数组,但不同的是这个table可以存数字也可以存字符串,也可以存其他的table或者function,用逗号分开即可
1 | a = {1,"ac",{},function() end} --用大括号声明 |
和其他语言不同,lua的table里第一个元素下标是1,第二个是2,而不从0开始数
还可以用lua自带的table接口对这个数组进行操作,用table.insert(数组名,下标,插入元素) 插入元素,用table.remove(数组名,下标)来删除
1 | a = {1,"ac",{},function() end} |
值得注意的是,table.remove()在移除的同时会返回这个移除的值
1 | a = {1,"ac",{},function() end} |
- 字符串下标,有点像python的字典,需要直接把下标写出来,格式如下
1 | a = { |
可以这样对下标进行赋值
1 | a = { |
7.全局表
在lua里有个特殊的table叫做_G,可以用_G来表示这个table,lua里所有的全局变量都在_G这个table里面
8.真和假
lua里有一种类型叫做布尔型,值只有true和false两种
1 | a = true |
注意:和其他语言不同,lua里只有false和nil代表假,其他的包括0都代表真
也可以用and和or来实现短路求值:
1 | a = nil --假 |
9.分支判断
lua里的分支判断语句写法:
1 | if 1>10 then |
10.循环
- for循环,第一行给变量定义一个初值和一个结束值和步长(步长可以倒序设置成-1),这个变量出了这个代码块就没有意义了,同时for循环中不允许对i值进行修改
1 | for i=1,10,2 do --从1开始到10,步长为2 |
- while循环,当判断依据满足要求则循环继续,不满足则循环结束
1 | local n = 10 |