首页 > 代码库 > Lua基础快速入门

Lua基础快速入门

http://blog.csdn.net/eric_xjj/article/details/9209947

在Lua中,and逻辑运算符如果第一个参数是false,则返回false,不会执行第二个参数的代码(即使第二个参数是一个错误的表达式,也能顺利运行);如果第一个参数是true,返回第二个参数的值。

or运算类似AND

 

 在Lua中,变量默认是全局的,这通常导致一些调试困难,最好尽量显式的在变量名之前加上 local 关键字声明该变量为局部变量。

    gNumber = 10  --这是一个默认全局的变量      print(type(gNumber))      --输出结果为number      gNumber = nil --之前的number类型gNumber = 10变量被释放      print(type(gNumber))      --输出结果为nil            function LocalVarFunction ()        local pTable = {} --用local关键字声明一个局部变量,这个变量将在执行LocalVarFunction方法后销        。。。。。。    end      

 

      table还可以使用其他的值作为索引值,并且能用数字跟其他值同时作为同一个table的索引

    gTable = {}      gTable.name = "eric"      gTable.gender = "man"      gTable.phonenumber = "0000000000"      gTable[1] = "公司"      gTable[2] = "部门"      for index, value in pairs(gTable) do         print(index, value)      end      --[[      输出结果如下:      1   公司      2   部门      phonenumber 0000000000      gender  man      name    eric      --]]  

 数字的话用【】,非数字用.点

 

table的索引还可以是table本身,这样就组成了一个多维table或多维字典。

    gTable = {}      gTable.name = "eric"      gTable.gender = "man"      gTable.phonenumber = "0000000000"      gTable[1] = "公司"      gTable[2] = "部门"      gTable.hobby = {"跑步", "读书", "游戏", "动漫"}  -- 多维table,可以通过gTable.hobby[1]的方式访问.即gTable.hobby本身也是一个table      gTable.secTable = {}      gTable.secTable.job = "程序员"      gTable.secTable.label = "写代码的"      gTable.secTable.description = "职责是实现产品的逻辑"            for index, value in pairs(gTable) do         print(index, value)        if ("table" == type(value)) then           for idx, var in pairs(value) do                print("二维table:", idx, var)           end         end      end      --[[      输出结果如下:      1   公司      2   部门      hobby   table: 0x7fdceac14bc0      二维table:    1   跑步      二维table:    2   读书      二维table:    3   游戏      二维table:    4   动漫      phonenumber 0000000000      gender  man      secTable    table: 0x7fdceac15100      二维table:    label   写代码的      二维table:    description 职责是实现产品的逻辑      二维table:    job 程序员      name    eric      --]]  

 

table.getn()函数,返回table中元素的个数。如:

  1. gStringTable = {"a", "b","c","d","e"}  
  2. for i = 1, table.getn(gStringTable) do  
  3.      print(gStringTable[i])  
  4. end

可以看到,默认table的下表用数字来表示

 

 

 在Lua脚本中,函数是以function关键字开始,然后是函数名称,参数列表,最后以end关键字表示函数结束。需要注意的是,函数中的参数是局部变量,如果参数列表中存在(...)时,Lua内部将创建一个类型为table的局部变量arg,用来保存所有调用时传递的参数以及参数的个数(arg.n)

 

function PrintFriendInfo (name, gender, ...)     local friendInfoString = string.format("name:%s  gender:%d",name,gender)    if 0 < arg.n then       for index = 1, arg.n do           friendInfoString = string.format("%s otherInfo:%s",friendInfoString, arg[index])       end     end     print(friendInfoString)  end      PrintFriendInfo ("eric", 1, "程序员","2b", 50)     --输出结果为:  -- name:eric  gender:1 otherInfo:程序员 otherInfo:2b otherInfo:50  

 这里arg.n=3

 

Lua函数的返回值跟其他语言比较的话,特殊的是能够返回多个返回值

    function GetUserInfo ()          local name = "eric"          local gender = 1          local hobby = "动漫"        return name, gender, hobby      end            print(GetUserInfo())            --输出结果:eric 1   动漫  

 loadstring(pString)()函数可以直接执行pString字符串组成的Lua码,但不提供报错功能

 dofile(filename)函数的功能是载入并立刻执行Lua脚本文件。可以用来载入定义函数的文件或者数据文件、或立即执行的Lua代码。dofile函数会将程序的执行目录作为当前目录。如果要载入程序执行目录的子目录里的文件,需要加上子目录的路径。

  1. dofile("/Users/ericli/WorkSpace/Lua语言/hellolua.lua")  
  2. --输出结果:Hello Lua! 

 

Lua基础快速入门