使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程。相比于C++,lua的开发确实快速便捷了许多,下文只是lua这门语言的一个基础知识点,没有涵盖整个Lua的内容,但是作为对lua入门的初步了解还是可以的,由于内容精简了不少,所以语言上可能会有点跳跃,但是问题不大。
要了解一门语言,首先要了解的是语言的标识符、保留字、常量和变量,命名规范和注释以及数据类型等。然后是运算符、控制流语句和一些常用的函数方法之类的东西。最后再涉及面向对象的内容等等。
一、标识符(命名规范)
按照上面的顺序,我们首先来看下Lua的标识符和保留字的内容吧。标识符就是语言给变量、常量、方法(函数)、对象和类等指定的名字。每一门语言都有自己的一套命名规范,虽然有些语言的命名规范略有差异,但是基本上是一致的,这也算是行业的一些潜规则吧。
Lua的标识符有以下几点要求:
1、严格区分大小写,即person和Person是不同的标识符。
2、在字符组成上,Lua同样满足可以由下划线、字母和数字组成,并且首字符不能是数字的要求。除此之外,Lua标识符还支持美元符号组成,即“$num_111”这样的标识符是合法的。
3、不能使用关键字(保留字)作为标识符。
所谓的关键字(保留字)是在语言中具有特殊意义的符号,每一门语言都会定义一些具有某些特殊含义的保留字,下面我们罗列下Lua的主要关键字:
1、语言基础:nil、local、function、type。
2、逻辑判断:and、or、not、true、false。
3、流程控制:return、break。
4、分之语句:if、then、else、elsif、end。
5、循环语句:do、while、for、in、repeat、until。
在C、C#、Java等语言中,常量只能在声明的时候初始化,之后就不能更改它的值。然而对Lua这种动态脚本语言而言,它并没有常量与变量之分,两个其实是一样的,都是变量,都可以在初始化后随意修改它的值。我们在声明常量的时候通常使用全大写字符组成,不同单词之间以下划线分隔。如:
Y_NAME = “clarence”
Lua中声明一个变量是在标识符前面加上local关键字来声明一个局部变量,不加local关键字的就是全局变量了。变量的命名方式是首字符小写,采用驼峰命名法。如:
local myName = “clarence”
name = “zengbinsi”
每个语言都有每个语言的命名规范,虽然不是强制要求的东西,但是一个好的命名风格会让你的代码更加美观和易于维护。Lua基本上和其他语言一致,除了上面提到的常量与变量的命名规范之外,在类名上,Lua一般采用首字符大写的驼峰命名法,而对象的命名法和变量的一致。另外,方法函数一般采用动词开头,首字母小写,后面每个单词首字母大写的驼峰命名法进行命名。
二、代码注释
在Lua中,代码注释主要分两种:单行注释(- - 注释内容)和多行注释(- - [[ 可换行注释内容 ]] - -)。如:
- - 单行注释
local num = 621 - - 声明一个变量num,并赋值。
- - [[
这里是多行注释
print(“Hello World!”)
]] - -
三、数据类型
Lua和Javascript一样同属于动态语言,所以它的类型是在赋值的时候才确定下来的,并且后期重新赋值的时候会再次确定新的类型。Lua主要的数据类型有:数值类型(number)、布尔类型(boolean)、字符串类型(string)、函数类型(function)、线程(thread)、表类型(table)、自定义类型(userdata)和空值(nil)。
数值类型可以保存实数,包括整数和小数,整数包括十进制和十六进制,十六进制的整数是以“0x”开头的一串数字序列。
布尔类型的值只有两种:true和false,用于表示“真”和“假”。
字符串类型是由0个或者多个被双引号(“”)或者(’’)包裹的字符序列。
函数类型,Lua里面的函数类型也是第一类值,所谓的第一类值的意思就是函数和我们普遍认识的字符串、数字之类的类型是一样的,可以保存在一个变量里面,可以重新赋值,也可以当成函数的实参传递到其他函数内部等等。
线程类型可以同时执行多个(多线程),每个线程会开辟独立的栈区、局部变量等。
表类型类似于其它语言的数组或者字典类型,但是它比数组或者字典类型更加强大,它是使用大括号({})表示的,创建表类型的代码如下:
- - 数组形式
local nums = {2, 1, 5, 6, 1, 1,}
- - 字典