1. 程式人生 > >lua語言-《lua程式設計》1~5章基礎學習

lua語言-《lua程式設計》1~5章基礎學習

由於openwrt的web,不得不看lua語法,《lua程式設計》一書講的很詳細基礎,比較易懂,以下為重點記錄。

1.註釋與取消註釋
    添加註釋
    --[[
    print("hello world")
    --]] 
    取消註釋只要加“-”即可
    ---[[
    print("hello world")
    --]]    
2.lua中的字串是不可變的值,不能像c語言那樣直接修改字串的某個字元
3.lua中的table型別實現關聯陣列,也就是具有特殊索引方式的陣列,除了整數,還可以用字串等方式  
  由構造表示式完成,最簡單的構造表示式是{} 
    a = {} --建立一個table,並將它的引用儲存到a
k = "x" a[k] = 10 --新條目,key=“x”,value=10 a[20] = "great" --新條目,key=20,value=“great” a.x = 10 --等同於a["x"] = 10,以字串索引打牌table 4.雖然可以任何數字作為table的索引起始值,但lua的習慣,通常以1作為索引起始值 5.使用tonumber()可以顯示轉為為整數 6.lua的函式很有特色 可以儲存在變數中 可以作為引數 可以程式重新定義這個函式 可以返回多個結果 可以巢狀在函式中 7.repeat..until
語句的使用相當於c中的do..while(條件) 注意:一個宣告在迴圈體中的區域性變數作用域包括條件測試 8.數字型for(numeric for) 語法如下: for var=exp1,exp2,exp3 do <執行體> end var從exp變化到exp2,exp3為可選的,作用是指定步長,如果不指定,預設為1 9.泛型for(generic for) 通過迭代器函式遍歷所有值,不應該對迴圈遍歷賦值 語法如下: --列印陣列a的所有值 for i,v in ipairs(a) do print(v) end lua基礎庫提供遍歷陣列的迭代器函式ipairs
(),i被賦予索引值,V被賦予該索引的陣列元素值 標準庫提供的迭代器: 迭代檔案中的每行:io.lines 迭代table的元素:pairs 迭代陣列的元素:ipairs 迭代字串的單詞:string.gmatch 10.函式專講 一個函式若只有一個引數,並且此參是字串或table構造式,()可有可無 print "hello word" 相當於 print("hello word") f{x=10,y=20} 相當於 f({x=10,y=20}) 面向物件式的呼叫,冒號操作符 o.foo(o,x) 另一中寫法是 o:foo(x),o隱式的作為函式的第一個引數 呼叫函式時提供的實引數量可以與形引數量不同,lua自動調整實引數量匹配引數表要求 函式具有變長引數,使用表示式"...",表示接受不同數量的實參 示例; function add(...) local s=0 for i,v in ipairs{...} do s=s+v end return s end print(add(3,4,10,25,12)) 注1.多值恆等式函式:function id(...) return ... end2.select("#",...);返回所有變長引數的總和,其中包括nil 具名實參:通過名稱來指定實參 實現是將實參組織搭配一個table中,並將這個table作為唯一的實參傳給函式,上面講了,實參 只有一個table構造式,函式呼叫的圓括號"()"可有可無。所以可以寫成如下示例: os.rename{old="temp.lua",new="temp1.lua"} --os.rename()的作用是重新命名