在lua的简单学习语法上,以下是需要我们注意的
1、if语句后面跟then关键字(不管是if、if else、if嵌套),if的条件语句后面一定要加上then关键字,结束以后加上end关键字
形如:
if(a>b)
then
return a
else
return b
end
2、while,for循环语句后面要加上do关键字,结束同样要加end关键字
形如:
for a,b in ipairs(table)
do
print(a)
end
while(1)
do
print("1")
end
3、repeat...until 语句,需要注意的是,这个语句和c/c++/java里面的do...while语句差不多,不用的在于:判断的条件是不满足的时候循环,而不是满足条件语句循环
形如:
lacol a = 10
repeat
a = a+1
print("a="..a)
until(a>15)...条件不满足,则再次循环
输出:
11,12,13,14,15
4、lua的表,索引,不同于别的语言,它的下标是从1开始的,而不是0,你可以打印出来看下
local a = {"a","b","c"}
for i in ipairs(a) do
print(i)
end
输出1,2,3
5、lua的函数,是可以返回多个值的,作为右值的时候,对应补充左值,多余的舍去,不够的初始化nil
6、lua中的关系运算符中,有一个要注意的是:不等于是~=,而不是c/c++/java中的!=,注意
7、lua中的逻辑运算符中,and是与,or是或,not是非
8、lua中其他运算符还有:两个点..代表连接符,#代表取大小
形如:
print("a="..1)
输出:a=1
local a = {"a","b","c"}
local b = "Hello"
print("a="..#a)
print("b="..#b)
输出:a = 3
输出:b = 5
9、字符串的应用string
string.upper(...)//小写转成大写
string.lower(...)//大写转成小写
string.gsub(a,b,num)//在a里面查找b,换num个,num不填代表替换全部
string.find(a,b,num)//在a里面找b,num是索引,返回的是b的位置信息
string.reverse(a)//将a反转
string.format(a,b)//b接在a的格式说明里面,譬如a里面有%d,b = 5,则输出5
string.char(num1.num2.num3)//将对应的num转换为ascii值
string.byte(a,num)//将a转换成字符,num是索引
10、数组的问题,因为lua的数组,列表都是以一种键值对的方式存储的,所以数组的索引是可以用负数的,就像json的key,对应的可以找到value就可以了。但是,不可以为nil
11、表:元表,元方法
setmetatable(A,B)设置表B是表A的元表
元表里元素的查找是一下顺序
1>在表中查找对应的key,有的话,返回value,没有的话,继续向下查找
2>查找是否有元表,没有元表返回nil,有的话继续
3>在元表中查找是否有_index,_index为nil则返回nil、_index为表则返回第一步开始、_index为函数则进入函数体
对于表,要知道的一些元方法
_newindex 是对表的更新,当加入新的键值的时候,不赋值,但是调用元方法,元表添加
当对于旧的键值赋值更新时,赋值,不调用元方法,也就是按照查找的规律,找到了就替换,找不到就在元表里添加