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

Lua快速入门

时间:2014-08-29 13:05:38      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:lua   脚本   

lua作为很好的嵌入式语言可以非常好的作为c/c++补充,在游戏行业是得到了广泛的应用

一直在思考,能不能把他引入商业领域的规则语言呢?将业务规则经常变的部分提炼出来,

而无须重新编译程序。作为规则引擎的角色进行使用 

使用前当然得安装一下去http://www.lua.org/下载一个 Lua_v5.1.4.23.exe安装,装完之后执行

可以用 lua.exe逐行解释的方式,或者写完脚本用lExecutor.wlua执行

1)先来个helloworld

bubuko.com,布布扣
bubuko.com,布布扣> print helloWorld
bubuko.com,布布扣helloWorld
bubuko.com,布布扣
> print("helloWorld") --注释是这么写的!
bubuko.com,布布扣helloWorld
bubuko.com,布布扣
> a=hello
bubuko.com,布布扣
> print(a)
bubuko.com,布布扣hello
bubuko.com,布布扣

2)主要类型

bubuko.com,布布扣
bubuko.com,布布扣> a=1
bubuko.com,布布扣
> b="abc"
bubuko.com,布布扣
> c={}
bubuko.com,布布扣
> d=print
bubuko.com,布布扣
>
bubuko.com,布布扣
> print(type(a))
bubuko.com,布布扣number
bubuko.com,布布扣
> print(type(b))
bubuko.com,布布扣string
bubuko.com,布布扣
> print(type(c))
bubuko.com,布布扣table
bubuko.com,布布扣
> print(type(d))
bubuko.com,布布扣
function
bubuko.com,布布扣
>
bubuko.com,布布扣

  如上所示,lua主要有四种类型,即数字,字符串,table(其实理解可以理解为javascript的object),以及函数类型,

当然了,还有最常的bool型了,true以及false,(这里不考虑nil,以及userdata,thread等)

函数类型的变量,加上"() "即可以执行,如

> d(b)
abc

 3)变量及常量,字符串

bubuko.com,布布扣
bubuko.com,布布扣> a,b,c,d = 1,2,c,{1}
bubuko.com,布布扣
> print (a,b,c,d)
bubuko.com,布布扣
1       2       c       table: 0041BC58
bubuko.com,布布扣
> a="single ‘quoted‘ string and double \"quoted\" string inside"
bubuko.com,布布扣
> b=single \quoted\ string and double "quoted" string inside
bubuko.com,布布扣
> c= [[ multiple line
bubuko.com,布布扣>> with‘single‘
bubuko.com,布布扣>> and "double" quoted strings inside.
]]
bubuko.com,布布扣
>
bubuko.com,布布扣
> print(a)
bubuko.com,布布扣single 
quoted string and double "quoted" string inside
bubuko.com,布布扣
> print(b)
bubuko.com,布布扣single 
quoted string and double "quoted" string inside
bubuko.com,布布扣
> print(c)
bubuko.com,布布扣 multiple line
bubuko.com,布布扣with
single
bubuko.com,布布扣
and "double" quoted strings inside. 
bubuko.com,布布扣> a=a.."看我给接上"  --字符串用两个..可以进行连接
bubuko.com,布布扣
> print(a)
bubuko.com,布布扣single 
quoted string and double "quoted" string inside看我给接上
bubuko.com,布布扣

我们关注一下lua比较特别的地方

  • 声明变量及给变量赋值的时候,可以多变量一起赋值
  • 字符串常量可以用双引号及单引号,并且混用的时候无须转义字符,跟php有点类型,还可以用"[[]]"括起来,
    这一点类似于c#里面字符串可以加上@符号,可以保留字符串内的格式

 4)逻辑控制语句

bubuko.com,布布扣
bubuko.com,布布扣> a=10 --逻辑控制语句就不费口舌了,反正就这几个词,跟pl/sql有点像
bubuko.com,布布扣
> if a==10 then
bubuko.com,布布扣
>> print("我是10")
bubuko.com,布布扣
>> elseif a== 11 then
bubuko.com,布布扣
>> print("我是11")
bubuko.com,布布扣
>> else
bubuko.com,布布扣
>> print("我是水户洋平等等")
bubuko.com,布布扣
>> end
bubuko.com,布布扣我是10
bubuko.com,布布扣

5)循环结构

bubuko.com,布布扣
> --第一种while循环
> a=1
> while a~=10 do
>> io.write(a.."  ")
>> a=a+1
>> end
1  2  3  4  5  6  7  8  9  >
> --第二种repeat、until循环
> a=0
> repeat
>>      a=a+1
>>      print(a)
>> until a==5
1
2
3
4
5
> --第三种for循环
> for a=1,4 do
>>      io.write(a)
>> end
1234>
> --比较特别,有个步进的概念,如下是以2为步进
13> for a=1,4,2 do
>> io.write(a.. )
>> end
1 3 > for a=1,5,2 do
>> io.write(a..   )
>> end
1  3  5  >

6)函数及其使用

bubuko.com,布布扣
bubuko.com,布布扣> --1.先来个最简单的
bubuko.com,布布扣
> function myFunc1()
bubuko.com,布布扣
>>      print("hello function")
bubuko.com,布布扣
>> end
bubuko.com,布布扣
> myFunc1()
bubuko.com,布布扣hello 
function
bubuko.com,布布扣
> --2.再来个带参数的
bubuko.com,布布扣
> a=1
bubuko.com,布布扣
> b=2
bubuko.com,布布扣
> function myFunc2(par1,par2)
bubuko.com,布布扣
>>      return par1+par2
bubuko.com,布布扣
>> end
bubuko.com,布布扣
> c=myFunc2(a,b)
bubuko.com,布布扣
> print(c)
bubuko.com,布布扣
3
bubuko.com,布布扣
> --3.甚至可以返回多个变量
bubuko.com,布布扣
> a=1
bubuko.com,布布扣
> b=2
bubuko.com,布布扣
> function myFunc3(A,B)
bubuko.com,布布扣
>>      return B,A
bubuko.com,布布扣
>> end
bubuko.com,布布扣
> c = myFunc3(a,b) --c会等于返回的第一个,在此倒转过来即为2
bubuko.com,布布扣
> print(c)
bubuko.com,布布扣
2
bubuko.com,布布扣
> c,d=myFunc3(a,b) --当然如果给多个变量赋值就没有问题了
bubuko.com,布布扣
> print(c,d)
bubuko.com,布布扣
2       1
bubuko.com,布布扣
> print(myFunc3(a,b)) --直接打印就把所有打印出来
bubuko.com,布布扣
2       1
bubuko.com,布布扣
> --4.还可以是变参
bubuko.com,布布扣
> function myFunc4(bubuko.com,布布扣)
bubuko.com,布布扣
>> print(bubuko.com,布布扣)
bubuko.com,布布扣
>> end
bubuko.com,布布扣
> myFunc4(a,b,c,d)
bubuko.com,布布扣
1       2       2       1
bubuko.com,布布扣

 7)table(我觉得理解object也可以)的使用

bubuko.com,布布扣
bubuko.com,布布扣> linbc={} 
bubuko.com,布布扣
> linbc.sex = ""
bubuko.com,布布扣
> linbc.age = 27
bubuko.com,布布扣
> print(linbc,linbc.sex,linbc["age"])
bubuko.com,布布扣table: 0041ED50 男      
27
bubuko.com,布布扣
> A=linbc
bubuko.com,布布扣
> print(A["sex"])
bubuko.com,布布扣
bubuko.com,布布扣
> print(A)  --引用类型,看A以及linbc内存地址是一样的
bubuko.com,布布扣
table: 0041ED50
bubuko.com,布布扣
>  --瞧这用法,跟javascript的用法基本相当
bubuko.com,布布扣
>  --其实还可以理解为hashmap似的键值对
bubuko.com,布布扣
> for i,v in pairs(linbc) do
bubuko.com,布布扣
>>    print(i,v)
bubuko.com,布布扣
>> end
bubuko.com,布布扣age     
27
bubuko.com,布布扣sex     男
bubuko.com,布布扣
>  --也可以作为数组,下标是从1开始的喔
bubuko.com,布布扣
> arr={1,2,3,"a",b,linbc}
bubuko.com,布布扣
> for i,v in pairs(arr) do
bubuko.com,布布扣
>>    print(i,v)
bubuko.com,布布扣
>> end
bubuko.com,布布扣
1       1
bubuko.com,布布扣
2       2
bubuko.com,布布扣
3       3
bubuko.com,布布扣
4       a
bubuko.com,布布扣
5       b
bubuko.com,布布扣
6       table: 0041ED50
bubuko.com,布布扣
>  --既然作为数组吧,那肯定是可以增加记录的吧
bubuko.com,布布扣
> table.insert(arr,A)
bubuko.com,布布扣
> table.foreach(arr,function(i,v) print(v) end)
bubuko.com,布布扣
1
bubuko.com,布布扣
2
bubuko.com,布布扣
3
bubuko.com,布布扣a
bubuko.com,布布扣b
bubuko.com,布布扣table: 0041ED50
bubuko.com,布布扣table: 0041ED50
bubuko.com,布布扣
> --瞧上面,可以foreach,还可以用匿名函数喔
bubuko.com,布布扣
> --当然也可以用下标访问了
bubuko.com,布布扣
> print(arr[1])
bubuko.com,布布扣
1
bubuko.com,布布扣
> --调用table.insert会自动给增加下标,如
bubuko.com,布布扣
> table.insert(linbc,"hello")
bubuko.com,布布扣
> print(arr[1])
bubuko.com,布布扣
1
bubuko.com,布布扣

Lua快速入门

标签:lua   脚本   

原文地址:http://blog.csdn.net/zhenyu5211314/article/details/38922587

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