lua快速入門(轉)

lua快速入門

lua作爲很好的嵌入式語言可以非常好的作爲c/c++補充,在遊戲行業是得到了廣泛的應用

一直在思考,能不能把他引入商業領域的規則語言呢?將業務規則經常變的部分提煉出來,

而無須重新編譯程序。作爲規則引擎的角色進行使用

使用前當然得安裝一下去http://www.lua.org/下載一個 Lua_v5.1.4.23.exe安裝,裝完之後執行

可以用 lua.exe逐行解釋的方式,或者寫完腳本用lExecutor.wlua執行

1)先來個helloworld

複製代碼
> print 'helloWorld'
helloWorld
> print("helloWorld") --註釋是這麼寫的!
helloWorld
> a='hello'
> print(a)
hello
複製代碼

2)主要類型

複製代碼
> a=1
> b="abc"
> c={}
> d=print
>
> print(type(a))
number
> print(type(b))
string
> print(type(c))
table
> print(type(d))
function
>
複製代碼

  如上所示,lua主要有四種類型,即數字,字符串,table(其實理解可以理解爲javascript的object),以及函數類型,

當然了,還有最常的bool型了,true以及false,(這裏不考慮nil,以及userdata,thread等)

函數類型的變量,加上"() "即可以執行,如

> d(b)
abc

 3)變量及常量,字符串

複製代碼
> a,b,c,d = 1,2,'c',{1}
> print (a,b,c,d)
1       2       c       table: 0041BC58
> a="single 'quoted' string and double \"quoted\" string inside"
> b='single \'quoted\' string and double "quoted" string inside'
> c= [[ multiple line
>> with'single'
>> and "double" quoted strings inside.
]]
>
> print(a)
single 
'quoted' string and double "quoted" string inside
> print(b)
single 
'quoted' string and double "quoted" string inside
> print(c)
 multiple line
with
'single'
and "double" quoted strings inside.
> a=a.."看我給接上"  --字符串用兩個..可以進行連接
> print(a)
single 
'quoted' string and double "quoted" string inside看我給接上
複製代碼

我們關注一下lua比較特別的地方

  • 聲明變量及給變量賦值的時候,可以多變量一起賦值
  • 字符串常量可以用雙引號及單引號,並且混用的時候無須轉義字符,跟php有點類型,還可以用"[[]]"括起來,
    這一點類似於c#裏面字符串可以加上@符號,可以保留字符串內的格式

 4)邏輯控制語句

複製代碼
> a=10 --邏輯控制語句就不費口舌了,反正就這幾個詞,跟pl/sql有點像
> if a==10 then
>> print("我是10")
>> elseif a== 11 then
>> print("我是11")
>> else
>> print("我是水戶洋平等等")
>> end
我是10
複製代碼

5)循環結構

循環結構

6)函數及其使用

複製代碼
> --1.先來個最簡單的
> function myFunc1()
>>      print("hello function")
>> end
> myFunc1()
hello 
function
> --2.再來個帶參數的
> a=1
> b=2
> function myFunc2(par1,par2)
>>      return par1+par2
>> end
> c=myFunc2(a,b)
> print(c)
3
> --3.甚至可以返回多個變量
> a=1
> b=2
> function myFunc3(A,B)
>>      return B,A
>> end
> c = myFunc3(a,b) --c會等於返回的第一個,在此倒轉過來即爲2
> print(c)
2
> c,d=myFunc3(a,b) --當然如果給多個變量賦值就沒有問題了
> print(c,d)
2       1
> print(myFunc3(a,b)) --直接打印就把所有打印出來
2       1
> --4.還可以是變參
> function myFunc4()
>> print()
>> end
> myFunc4(a,b,c,d)
1       2       2       1
複製代碼

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

複製代碼
> linbc={} 
> linbc.sex = ""
> linbc.age = 27
> print(linbc,linbc.sex,linbc["age"])
table: 0041ED50 男      
27
> A=linbc
> print(A["sex"])

> print(A)  --引用類型,看A以及linbc內存地址是一樣的
table: 0041ED50
>  --瞧這用法,跟javascript的用法基本相當
>  --其實還可以理解爲hashmap似的鍵值對
> for i,v in pairs(linbc) do
>>    print(i,v)
>> end
age     
27
sex     男
>  --也可以作爲數組,下標是從1開始的喔
> arr={1,2,3,"a",'b',linbc}
> for i,v in pairs(arr) do
>>    print(i,v)
>> end
1       1
2       2
3       3
4       a
5       b
6       table: 0041ED50
>  --既然作爲數組吧,那肯定是可以增加記錄的吧
> table.insert(arr,A)
> table.foreach(arr,function(i,v) print(v) end)
1
2
3
a
b
table: 0041ED50
table: 0041ED50
> --瞧上面,可以foreach,還可以用匿名函數喔
> --當然也可以用下標訪問了
> print(arr[1])
1
> --調用table.insert會自動給增加下標,如
> table.insert(linbc,"hello")
> print(arr[1])
1
複製代碼

 

基本上lua是一門比較簡潔的語言,感覺跟javascript like 80%,很輕量級



轉自http://www.cnblogs.com/linbc/archive/2009/06/02/1494622.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章