Lua基础需要注意的问题

来源:互联网 发布:java 桌面应用程序 编辑:程序博客网 时间:2024/06/15 17:54

在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 是对表的更新,当加入新的键值的时候,不赋值,但是调用元方法,元表添加

当对于旧的键值赋值更新时,赋值,不调用元方法,也就是按照查找的规律,找到了就替换,找不到就在元表里添加


0 0