接下來把我所看的《Lua程序設計》中介紹lua的內容,時時的記錄下來。當做一個讀書筆記吧。
先說一下怎樣直接運行lua文件吧,windows cmd進入相應的文件夾,然后輸入lua,出現版本信息,然后dofile("a.lua"),可以運行自己創建的lua腳本。退出lua交互控制,可用os.exit()。交互模式可以通過do。。end實現代碼塊。
1.lua的全局變量,直接為變量賦值即可,如果沒有賦值,一個變量將被認定為nil。如果想刪除一個全局變量,可以直接為變量賦值,如b=nil
2.lua中的保留字,不能當做標識符。
and break do else elseif end false for function if in local nil not or repeat return then true until while
lua大小寫敏感,單行注釋用--,多行注釋用--[[ --]]
3.lua的8個基本類型:
nil boolean number string userdata function thread table
lua可以直接測定給定變量或者值的類型。
nil:只有一個值,nil,全局變量沒有被賦值之前默認為nil。為全局變量賦值nil,可以刪除該變量。
boolean:lua中所有的值都可以作為條件,除了false和nil為假,其他都為真。lua中認為0和空串是真的。
number:實數,lua中沒有整數,可處理任何長整數,如 2 0.2 2e-3 0.2e11 2e+20
string:lua8位字節,可以用單引號或者雙引號,可以處理長字符串,1M的string也是可以處理的,很高效。lua中可以通過轉義字符,對字符串進行處理。lua還可以自由的進行string、number之間的轉換,如可用print("10"+1),得到結果11。
lua中的字符串連接符是 .. ,數字之后寫點點,必須加上空格。防止被解釋錯。
function:函數可以存儲在變量中,可以作為函數的參數,可以作為返回值。一個程序可以重新定義函數增加新的功能,或者避免不行的代碼隱藏函數。lua可以調用c或者lua實現的函數,所有標準均是c實現的。
4.支持算數運算符,二元:+-*/^,一元:-。
關系運算符:> < <= >= == ~=。不能混合比較。
邏輯運算符:nil和false為假,and、or、not,and的優先級比or高。c中的三元符a?b:c,lua中用(a and b)or c
5.優先級從高到低。運算符優先級排序。
6.表的構造。構造器是創建和初始化表的表達式。表的以第一個元素的索引為1.(并不是其他語言的0)。表中的元素可以任意的添加和刪除。在構造函數的最后","是可選的,方便以后的拓展,分割符號可以用分號代替,區分不同類型的元素。
7.lua可以對多個變量同時賦值,可以實現swap,也可以通過多變量賦值得到函數的返回值。如:a,b=b,a a[i],a[j]=a[j],a[i] a,b=f()
8.代碼塊的概念:一個控制結構,函數體,或者一個chunk,都可以是一個代碼塊。
使用local可以創建一個局部變量,與全局變量不同,局部變量只在聲明的代碼塊中有效。
程序中盡可能的使用局部變量,避免命名沖突,訪問局部變量的速度比較快。
9.控制語句:if的格式有三種,
if 條件 then 語句塊 end;
if 條件 then 語句塊 else 語句塊 end;
if 條件 then 語句塊 elseif 條件 then 語句塊 else 語句塊 end。
while語句:while 條件 do 語句塊 end
repeat-until語句:repeat 語句塊 until 條件
for語句:@1.數值for循環,for i=10,1,-1 do
print(i)
end
第一個值為初始值,第二個值為結束值,第三個為step值(可以省略,默認為1)。
@2.泛型for循環,遍歷表有兩種方式,一種是 in pairs(表名),一種是in ipairs(表明)。
break和return語句放在流程控制中。
10.函數 function+函數名(參數)end
當函數只有一個參數,并且這個參數是字符串或者表構造時,()可有可無。
lua函數可以有多個返回值,該返回時直接 return m,n,j
lua中調用可變參數的可變函數,可以用unpack函數,使用方法如f(unpack(a)),a為一個表
未完,待續。。
文章列表