Programmming in Lua學習筆記
author:陣雨 2005年11月17日2:34:46
第0章 序言
Lua所提供的機制是C不善于的:高級語言、動態結構、簡潔,易于測試和調試。
正因為如此,Lua具有良好的安全保證,自動內存管理,簡便的字符串處理功能
以及其他動態數據的改變。
Lua具有可擴展、簡單、高效、跨平臺的特點。
第 1 章 起點
一個Chunk可以是一個語句,也可以是一系列語句的組合,還可以是函數,Chunk可以很大,在Lua中幾個Mbyte的Chunk
是很常見的。
全局變量不需要聲明,給一個變量賦值后即創建了這個全局變量,訪問一個沒有初始值的全局
變量也不會出錯,只不過的得到的結果是:nil。
如果想刪除一個全局變量,只需要將變量賦值為 nil.
第 2 章 類型和值
每個語句結尾的分號 ';' 是可選的,但是如果同一行有多個語句最好用' ; '來將其隔開
Lua是動態類型語言,變量不要類型定義。lua中有8種基本類型分別為:
nil ,boolean ,number, string,userdata,function,thread,table
變量沒有預定義的類型,每一個變量都可能包含任一種類型的值,例如:
print(type(a)) -->nil ('a' is not initialized)
a=10
print(type(a)) -->number
a="a string"
print(type(a)) -->string
a=print -->yes ,this is valid!
a(type(a)) -->function
我們可以使用function像使用其它值一樣使用
Nil
Lua中特殊的類型,它只有一個值:nil,一個全局變量沒有被賦值以前默認值為nil
Booleans 兩個取值 false 和 true ,但要注意Lua中 “所有的值”都可以用作為條件,在控制結構的
條件中除了false 和 nil 為假,其它值都為真,所以Lua認為0和空串都是真.
Lua的字符串可以包含任何數值的字符,包括嵌入的0,這意味著你可以存儲任意的二進制數據在一個字符串里面。
字符串是不可以修改的,你可以創建一個新的變量來存儲你要的字符串
Lua可以高效率的處理長字符串,1M大小的string在Lua中是常見的。
可以用單引號或者雙引號來表示字符串 a="a lien" ,b='another line'
轉義字符與C語言相同。
可以在字符串中使用\ddd (ddd為三位十進制數字) 方式來表示字母
還可以使用[[ ...]]來表示字符串,這種形式的字符串可以包含多行,也可以嵌套,
而且不會解釋轉移字符,如果第一個字符是換行符會被自動忽略掉,這種形式的字符串
用來包含一段代碼是非常方便的
運行時,Lua會自動在string和numbers之間自動進行類型轉換,當一個字符串使用算術
操作符時,string會被轉換成數字
盡管字符串和數字可以自動轉換,但是兩者是不同的,比如 10 ~= "10".
Lua通過引用比較tables userdata functions ,也就是說當且僅當兩者表示同一個對象時
他們才相同,nil只和nil相等。如果兩個值類型不同,Lua則認為他們不同
第 3 章 表達式
and 和 or 的運算結果不是true或者false,而是和它的兩個操作數相關.
a and b a or b 按照C語言的邏輯運算順序計算,a、b兩個表達式,計算到哪一個就返回哪一個的值
例如:a && b 如果 a為false,那么無須計算b 即可知表達式為false
所以 a and b的結果是如果a為false,則返回a,否則返回b
一個很實用的技巧,x = x or v
C語言中的 a ? b:c 等價于Lua中的 (a and b) or c
運算符的優先級(可惜沒有位運算
):
^
not -(unary)
* /
+ -
..
< > <= >= ~= ==
and
or
除了^和 .. 之外所有的二元運算符都是左連接的。
Lua中的表可以用字符串和數字作為index,如tt={name="table",["size"]=2,[3]="number"}
如果不使用數字表達式,Lua則自動從數字 1 開始作為index,如tt={"table",2} 那么tt[1]=="table,tt[2]==2
在構造函數中,域分隔符逗號(,)是可以用分號(;)替代的,通常我們用分號來分割不同類型的表元素。如:
tt={x=10,y=45 ; "one","two","three"}
The syntax var.NAME is just syntactic sugar for var["NAME"]:
posted on 2005-11-17 02:30
陣雨 閱讀(2103)
評論(3) 編輯 收藏 引用 所屬分類:
Lua Programming