欢迎加入 Cocos2d-x 交流群: 193411763
转载时请注明原文出处 http://blog.csdn.net/u012945598
该篇文章的内容仅仅是为了更好的在Cocos2d-x引擎中使用Lua提前储备一些关于Lua的语法知识,若要深入了解Lua请阅读专门书籍。
1.Lua 基本数据类型
nil 空
boolean 布尔类型
number 数值类型
string 字符串类型
userdata 自定义类型 这个类型专门用来和Lua的宿主打交道的。
function 函数类型 所有的函数,本身就是一个变量。
thread 线程类型
table 表类型
Lua是一种动态弱类型语言,灵活性十分强大,变量没有类型定义也可以使用。例如在Hello.lua的文件中声明一个变量:
myName="Lua" --无需写出myName变量的类型
myName=20
myName=print --此处将function函数赋给了变量,C/C++中无此功能,在某些情况下可以带来便利,比如nil类型
注意 “--”是Lua中的单行注释法,相当于C/C++中的 “//”,多行注释则使用"--[[ --]]",相当于/* */
在Lua中提供了一个函数type,专门用来测试给定变量或者值的类型。使用方法如下:
print(type(nil)) --空类型
print(type(true)) --布尔类型
print(type("Hello world")) --字符串类型
print(type(print)) --函数类型
上述数据类型中有一个表类型(table),这是一种强大的数据结构,也是Lua中唯一的一种数据结构。我们可以将它看做类似数组或容器的存在,只不过相对于C/C++中的数组,table更为灵活。例如,C语言中的数组只能用正整数作为索引,而table可以用任何东西做索引(nil除外),不限于数字;在C语言中,数组中的元素必须是相同类型的,而在Lua中,table可以存放任意类型的值(nil除外)。下面我们来定义一个table:
helloTable={ } --定义一个空表
helloTable[1]=25 --类似于C语言中使用数组的方法
helloTable={name="reventon",IQ=127}
此行代码可看成:
helloTable={ } --必须先定义成一个表,因为未定义的变量属于nil类型
helloTable["name"]="reventon"
helloTable["IQ"]=127
当索引字符串的时候,我们可以简写成:
helloTable.IQ=127
helloTable.name="reventon"
定义表的时候我们可以把全部的数据写在"{ }"之间,例如:
hellotable={
10, --此时索引值默认为[1],相当于[1]=10,元素之间需要用“ ,”隔开
[100]=20, --索引[100]的值是20,所有的索引值都需要用“'[ ]”括起来,字符串除外
You={ --字符串索引可以去掉引号及中括号
Age = 30, --字符串索引也可以写成 ["Age"]=30
IQ=12
},
20 --相当于[2]=20,索引被默认成了数字,从1向后排
}
2. Lua 关键字保留
Lua脚本语言是大小写敏感的,保留字如下:
and break do else elseif end false for function if in local nil not or repeat return then true until while
3. 表达式
Lua中有四种运算符
(1) 算术运算符(只能用于数字类型当中)
加 + 减(负值) - 乘 * 除 /
幂运算 ^ 例如: 2^3的结果为8 3^3的结果为9
(2)关系运算符
返回结果均为true / false,若比较时两个值的类型不同,返回的结果一定为false,nil类型只能与自己相等。
> < <= >= == ~=(相当于C中的!=)
(3)逻辑运算符
and or not
and 和 or 与C语言区别特别大。
在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true!
and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
a and b:如果a为false,则返回a;否则返回b
a or b:如果 a 为true,则返回a;否则返回b