lua介绍

来源:互联网 发布:美工工程师 编辑:程序博客网 时间:2024/05/05 07:58

 全局变量&非全局变量:每一个全局变量定义后,就会在系统表_G里面添加这个变量,定义全局变量不用声明。全局变量可以直接引用,也可以通过_G表来引用。如:a = 2 ,那么a和_G.a就表示同一个变量。非全局变量通过local来声明,不能通过_G表来访问。如: local a = 4,那么a和_G.a就不是同一个变量。

       数据类型:共有8种数据类型:nil、boolean、number、string、userdata、function、thread、table。type() 函数可以返回一个变量的数据类型,返回值为string类型。nil类型只有nil一个值,变量没有赋值前默认为nil,把nil赋给一个变量就表示删除这个变量。number表示数字类型,它没有整数、小数等之分。string表示字符类型,一个字符串可以用“”或者‘’,也可以嵌套使用(如:"Hello 'Lua' ")。

       注释:注释可以使用--来注释一行,也可以使用--[[和--]]对应起来注释多行。

       值的比较:在Lua里面,只有在判断条件为nil或false才被认为是失败,0在lua里面做为判断条件时被认为是成功。 ==表示判断是否相等、~=表示二个数据是否不相等,当然还有其它一些常用的符号。

       table:table 是lua里的特殊数据结构,有些像C++里面的struct,又有些像class。它里面可以申明属性,也可以包括方法。定义table时可以带任意个参数,也可以不带参数,如:a = {}或a = {"First","Second",three = "Three"}都可以。table有STL中map的特性,每一个value都对应了一个key值(在lua里面,数组下标默认是比1开始的),如上面的"First"对应的key值为1,“Second”对应的key值为2,而"Three"对应的key值为three。也可以使用[]号来表示key 值,如a = {[1]="First",[2]="Second",["three"] = "Three"}就和上面的结果是一样的。在表的定义外,可以用“表名.非数字key值”的形式来使用表内的元素,如:a.three == "Three"或a["three"] == "Three"。而数字类型的key值,可以用类似数组的形式来使用value,如:a[1] == "First"、a[2] == "Second"。

       pairs&ipairs:用for循环来实现table的迭代时,可以使用pairs和ipairs。它们之间的区别在于: pairs会返回table中的所有值,而ipairs只会返回数字key所对应的值。例:
array = {"X","Y","Z",x = "M",y = "N"}
for k,v in pairs(array) do
    print(k,v)
end       的结果是遍历了table中的所有元素。而
array = {"X","Y","Z",x = "M",y = "N"}
for k,v in ipairs(array) do
    print(k,v)
end       的结果则是遍历了table中所有key为数字的元素。

       运算符的重载:lua 里面可以重载+-*/等运算符,这是通过table来实现的。每一个运算符都有一个对应的key值,如+用__add来表示,-用__sub来表示等(__符号是英文输入状态下输入二个下划线)。大小比较符号重载时只有__eq(==)、__lt(<)、__le(<=)是可用的。__index 表示重载对表的访问时的操作,__newindex表示重载对表的更新时的操作。

原创粉丝点击