变量声明
Lua里只要赋值一个变量等于声明一个变量
声明的变量默认为全局变量,能在其他文件中调用,加上local后变为局部变量,则只能在当前函数,代码块中调用。
没有被声明过变量的值均为nil,也视为一种类型,没有被赋值,没有被声明均视为nil(类似于其他语言中的NULL)
Lua中同样可以多重赋值,声明没赋值同样为nil。
number类型
Lua所有的数字类型都是number类型,即涵盖了所有float,int等所有数据类型,同时也支持科学计数法以及十六位进制法
string类型
Lua可以用双引号和单引号在赋值一个字符串,同时也支持转移字符,如/n,单双引号也能录入空格,但不能换行。
用两个中括号则可以表示多行文本,则会录入包括空格换行同时,也/n等转义字符也不会转义。
字符串的链接用..表示
tostring可以将数字类型转换为字符类型,tonumber可以将字符类型转换为数字类型,当字符类型无法转换为数字类型时,其值为nil。
#号可以获取字符串长度,转义字符算一个字符。
函数
Lua函数写法如下,两种等价,括号内为参数。函数的返回值默认为nil。
函数使用示例
函数同样可以用return进行返回值,也可以进行多重返回值,同时配合多重赋值语句
table
table是Lua里重要的数据结构,大小不受限,为关联形数组,可以存任意索引,及number,sring,table本身,函数等,但是不能存nil,不存在的元素为nil。
table里可以用默认的数字下标,数字下标从1开始,而不是从零。table里也可以赋值,为table增加元素。也可以用#号获取table长度。
还可以用自带的table接口来进行插入操作,可以在指定位置插入值,原来的元素则顺位往下移,没有指定位置则默认插入到最后
同样也有移除操作,移除的同时也可以返回出来。
table里也可以用字符串作为下标,调用的时候要给字符下标加上双引号。
如果符合变量命名规范,则可以用.号表示。
不符合还有下面表示方式
也可以直接对下标进行赋值声明。(但是应该不是直接加在table后面,这时#a输出table长度为1)
全局表
Lua有一种特殊的table 全局表_G,所有的全局变量都在全局表_G中,都可以在_G中读取打印。
table同样也是全局变量,可以在_G中打出来,insert是table里面一个函数,也可以在_G中打印。
运算符号
Lua与其他基本一致,但是不等于用~=来表示
在Lua中除了false和nil代表假,其他都为真,在c中,数字0也为假,但是Lua中,数字0为真。
Lua中如果变量为值而不是true,会直接返回值
and中如果两边都为真则返回后面一个值。
Lua中if判断语句如下
Lua中for循环如下,
for循环后还可以加入步长,可以为负数,实现倒叙。lua中没有自增自减的操作。
注意,for循环中i值修改无效,不能在执行语句中对i进行操作,如果对i进行操作则会强制转换成一个新的local形i,对循环体中的i无影响。但是for循环中可以进行break
while循环
与其他语言相近,同样可以break
repeat循环
与while相似,写法不同。
string类型
跟c中字符串数字相似。char可以转移ascii码。
byte可以取出任意位置字符,同样下标从1开始而不是0
当然0x00不会结束字符串,直接成为0存入,而c中字符串0会让字符串结束。