------------------------第一章--lua语言基本语法----------------------------


第一节:变量与函数


lua是个和C十分相像的东西,不过也有很多不同点。引用一句话,lua除了关键字就是变量。
比如:C语言里面想定义一个整型变量的话:int i = 0; 但是在lua里面就简单了: i = 0;省略了变量前面的类型关键字。除此之外,lua里面所有与i = 0;这种格式定义的变量都是全局变量。 如何定义一个局部变量呢,很简单,在前面加local关键字,即:local i = 0; 局部变量一般用在函数里面。


弄清楚变量的定义方法以后,再来看看lua的语法特点。 如果说C语言是用大括号来定义函数的始末,那么lua就用函数头与end;来定义函数的始末,比如C语言:int func() {return 1;}
表示调用这个函数的时候会得到一个返回值为1的整型,而lua:function func() return 1; end; 看出区别了吧,lua定义函数的时候需要加上function关键字 func() 后面的括号里面表示参数,这里不需要,在end; 上面的语句就是调用函数时要执行的语句。需要注明的是,lua里面的函数的返回值类型同样不需要,lua会自动进行判断。


当然在lua里面也可以用{}大括号来划分block,不过一般不需要,就不多做说明了。

下面讲逻辑与循环。。。~

lua 脚本动态 lua脚本写法_运算符



第二节:逻辑与循环



逻辑语句就是if else/elseif 构成,语法和函数类似,也是用end;来结束,比如我们要写一个判断,当英雄等级大于20时胜利,否则失败,用heroLevel来表示英雄等级(至于怎么获得等会再讲)那么就有:if heroLevel > 20 then win(); else fail(); end; win()和fail()是要执行的函数。至于elseif 就是else 里面再嵌套一个if 写法类似。 时刻注意end;结尾。注意,在lua里面数字变量都是true (包括0) 而被判断为false的只有2个,false和nil。nil表示空,和null有点像。没有特殊情况把nil当成false用就好。



循环语句就比较复杂了,一般常用于数组,在lua里面循环有很多种,但是常用的有3个:

while,for,for...in。 while最简单,for其次,for...in比较方便不过不好查阅。假设我们要实现从1加到100,那么分别就有: PS:在lua里面注释用--而不是//,被注释的语句不会执行

--while syntax:
v = 1;
result = 0;
while v <= 100 do
result = result + v;
v = v + 1;
end;
--for syntax:
result = 0;
for i = 1, 100, 1 do
result = result + i;
end;
--for...in syntax:
result = 0;
intArray = {1,2,3,4,5,......,98,99,100};
for index, element in intArray do
result = result + element;
end;

细心地朋友想必已经看出来了,while自身不包含循环变量,for包含一个循环变量(这个循环变量默认为局部变量而不是全局变量,只能在循环体中使用),for...in则专门用于数组。对于while语句没什么好讲的,很简单,而for语句后面跟了3个参数,i = 1表示定义i这个循环变量用于循环体中,中间的100表示当i <= 100时执行循环体,最后的1是步长,也就是执行一次循环体i会自动增加这里的值,在这个例子中就是每次加1,加到100,。for...in有3个参数,先讲in后面的参数,是一个数组,而第一个index表示当前循环到的数组中的值的下标,第二个element则表示当前循环到的数组中的值。



被绕昏了有木有! 在h5里面循环用while和for就够了,至于for...in不用管它就好。



接下来讲数组和运算符,讲完这个就可以切入主题,看看lua脚本实例了。~

lua 脚本动态 lua脚本写法_运算符



第三节: 数组与运算符


lua的数组和C语言的数组很相似,都是以下标访问,不过lua的数组是table,不过不用管这么多,就当成数组用就好。 数组和变量一样,定义时都不用指定类型,直接arr = {1,2,3}; 就行了,然后arr[1] = 1就是1,arr[2] 就是2,arr[3]就是3。 没错,lua的数组下标是从1开始的而不是从0开始,除非你手动赋值。lua里面的数组非常灵活,比如 textArr = {"scripts/a.txt", "scripts/b.txt"}; 等等。。。


lua里面的运算符基本和C语言一样,不过h5不支持 "%"取余, "++"、"--"等的运算符,不过这些都可以自己定义一个函数解决。


有了上面的基础,差不多就可以写出丰富的脚本了。