Lua基础总结

来源:互联网 发布:alphago的算法 编辑:程序博客网 时间:2024/05/17 22:13
本文总结了Lua数据类型,表达式,基本语法。

Lua单行注释: --
      多行注释:--[[  --]]

全局变量:不需要声明,访问一个没有初始化的全局变量也不会出错,只是结果是nil。删除一个全局变量,只给他赋值nil,即b=nil。

Lua数据类型(8种):nil,boolean,number,string,undata,function,thread,table
函数type 可以判断变量或指定值的类型,
如:    print(type("hello lua "))      --> string
           print(type(type))                 --> function

Nil:    一个全局变量赋值之前默认是nil,给全局变量赋nil 可以删除该变量
Boolean:    Lua中所有的值都可以作为条件。在控制结构中,除了false和nil为假,其余都为真,如 0 和空串都是真。
Numbers:    实数,Lua中没有整数。Lua中可以处理任何长整数,不用考虑误差。
Strings:    指字符的序列。string和其他对象一样,Lua自动进行内存分配和释放。
                Lua可以高效的处理长字符串,1M的字符串很常见。

                Lua可以使用单引号或双引号表示字符串,不过最好使用一种,除非两种引号嵌套的情况。
                还可以使用[[---]] 表示字符串,这种方式可以包含多行。可以嵌套且不会解释转义序列。如果第一个字符是换行会自动忽略。
                这种方式的字符串用来包含一段代码是非常方便的。     
        number与string的转换:
                Lua会自动在string和number之间自动转换,当一个字符串使用算术运算符时,string就会被转成数字。
                如:print("10" + 1 )     --> 11            print("hello" + 1 )     -- ERROR(cannt convert "hello")
                数字转换成string,使用字符串连接符。。,当在数字后面加。。时必须加上空格,以免被解释错。
                如:print(10 ..  20)       --> 1020   
                显示地转换:使用tostring() ,tonumber() 

Functions:函数和其他类型一样,可以存储在变量中,可以作为函数的参数,已可以是函数的返回值
UserData和Thread:
                    userdata可以将C数据放入Lua变量中,userdata只有赋值和相等比较操作。

表达式:

逻辑运算:and    or    not
关系运算:==    ~=    
            如果两个值类型不同,会返回false。
            Lua通过引用比较tables,userdata和thread,当且仅当两者是同一对象时相等。
            特殊的地方:只有false和nil 被认为是假
            print(4  and  5 )        --> 5
            print(nil and 13)        --> false
            print(false and 13)  --> false
            print(4  or  5 )            --> 4
            print(false or 5)         --> 5
            x = x or v;                 一个很实用的技巧,当x为false或nil时,将v赋给x

            C语言中的三元运算 a ? b : c , 在Lua中等价于:(a  and  b) or c

字符串连接运算:   “hello”。。“ lua”

table的构造:
    Example1:
        days = {"sunday","monday","tuesday","wednesday","thursday","friday","saturday"};
        print(days[4])           --> wednesday
    Example2:
        a = {x = 0 , y = 0}
        等价于:a = {}  a.x = 0 , a.y = 0 
        

基本语法:
赋值语句:Lua可同时为多个变量赋值,以逗号分隔。如: x ,y = y, x   交换两个变量的值。
局部变量和代码块: 使用local创建局部变量。访问局部变量的速度比全局变量快。
                    可以添加do。。end 来控制局部变量的作用范围。

控制结构语句:
条件语句:
if  condition1 then 
                statement1
elseif  condition2  then  
                statement2
else  
                statementn
end;
while循环:
            while  condition  do
                    statements;
             end;
repeat-until循环:
             repeat 
                    statements;
             until  condition;

for循环有两大类:
1. 数值for循环:
for var = exp1,exp2,exp3  do         (exp3可以省略,默认step=1)
        loop- part;
end;
举例:
local found = nil;
for i=1,a.n do
    if a[i] == value then
            found = i;
            break;        
    end;
end;
2. 泛型for循环:
            【待以后专门总结】

break语句:退出for,repeat,while循环
return语句:返回结果
           




    
原创粉丝点击