lua語言-《lua程式設計》1~5章基礎學習
阿新 • • 發佈:2019-02-12
由於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 ... end
注2.select("#",...);返回所有變長引數的總和,其中包括nil
具名實參:通過名稱來指定實參
實現是將實參組織搭配一個table中,並將這個table作為唯一的實參傳給函式,上面講了,實參
只有一個table構造式,函式呼叫的圓括號"()"可有可無。所以可以寫成如下示例:
os.rename{old="temp.lua",new="temp1.lua"} --os.rename()的作用是重新命名