码迷,mamicode.com
首页 > 其他好文 > 详细

Lua基础快速入门

时间:2014-12-19 21:49:32      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

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基础快速入门

标签:

原文地址:http://www.cnblogs.com/notlate/p/4174690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!