什么是lua
lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(pontifical catholic university of rio de janeiro)里的一个研究小组,由roberto ierusalimschy、waldemar celes 和 luiz henrique de figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。lua由标准c编写而成,几乎在所有操作系统和平台上都可以编译,运行。lua并没有提供强大的库,这是由它的定位决定的。所以lua不适合作为开发独立应用程序的语言。lua 有一个同时进行的git项目,提供在特定平台上的即时编译功能。
lua脚本可以很容易的被c/c++ 代码调用,也可以反过来调用c/c++的函数,这使得lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替xml,ini等文件格式,并且更容易理解和维护。 lua由标准c编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。 一个完整的lua解释器不过200k,在目前所有脚本引擎中,lua的速度是最快的。这一切都决定了lua是作为嵌入式脚本的最佳选择。
lua里的注释
单行注释
使用两个减号表示注释的开始,一直延续到行末位置。相当于c语言中的"//"。
多行注释
使用"--[["表示注释开始,使用"]]"表示注释结束。这种注释相当于c语言中的"/*"和"*/"。
lua里的变量
在默认情况下,lua里认为所有的变量都是全局变量。假如需要定义局部变量,则在声明变量时需要使用local说明。
并且在赋值的时候,允许同时给多个变量进行赋值。
lua里的运算符
算数运算符
比较运算符
逻辑运算符
在使用逻辑运算符时与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;
通过lua里的这种特性,可以模拟c语言中的 ?:运算符
例如:c语言中的 x=a?b : c,在lua中,可以写成 x = a and b or c。
lua里的数据类型
关键字 | 描述 |
nil | 空值,所有没有使用过的变量都是nil;nil既是值,又是数据类型 |
boolean | 布尔类型,只有两个有效的值:true和false |
number | 数值类型,在lua里,相当于c语言里的double |
string | 字符串,如果愿意的话,字符串是可以包含"\0"字符的 |
table | 关系类型,这个类型的功能比较强大 |
function | 函数类型,可以由函数类型来声明变量 |
userdata | 这个类型专门与lua的宿主打交道。宿主通常是由c语言和c++语言开发的,在这种情况下,userdata可以是宿主的任何类型,常用的是结构体和指针类型 |
thread | 线程类型,在lua里没有真正的线程。 |
lua里的代码块
在c语言中代码块是有"{"和"}"括起来的,在lua中,使用do和end关键字括起来的。
lua里的关系类型
关系类型,是一个非常强大的类型。这个类型类似于c++语言里的映射结构,类似于php语言里的array对象,类似于oc里的nsdictionary对象。
在lua里的关系类型(table)定义很简单,它主要特征是使用"{"和"}"来括起来一系列的元素。
同样也可以如下声明
lua里的函数
在lua中,函数的定义非常简单。不过要注意的一点就是,return语句一定要写在end之前。假如我们非要在函数中加一个return语句,那就应该写成。
函数举例
lua里的类
前边曾经说过,表类型可以拥有任意类型的值,包括函数!
因此,我们就可以创建一个具有函数变量的表。
结束
就像c语言一样,lua里提供了很多的标准函数库来增强语言的功能。使用这些函数,可以很方便的操作各种数据类型。
可以参考《programming in lua》这本书。
如对本文有疑问, 点击进行留言回复!!
网友评论